diff --git a/src/client/component/scripting.cpp b/src/client/component/scripting.cpp index 671bc46b..e9945e3d 100644 --- a/src/client/component/scripting.cpp +++ b/src/client/component/scripting.cpp @@ -3,6 +3,7 @@ #include "game/game.hpp" +#include "command.hpp" #include "scheduler.hpp" #include "scripting.hpp" @@ -55,6 +56,7 @@ namespace scripting void scr_load_level_stub() { scr_load_level_hook.invoke(); + command::execute("reloadmenus"); lua::engine::start(); } diff --git a/src/client/game/scripting/lua/context.cpp b/src/client/game/scripting/lua/context.cpp index f9648b96..c3badd6c 100644 --- a/src/client/game/scripting/lua/context.cpp +++ b/src/client/game/scripting/lua/context.cpp @@ -12,6 +12,7 @@ #include "../../../component/chat.hpp" #include +#include namespace scripting::lua { @@ -32,6 +33,16 @@ namespace scripting::lua { state["level"] = entity{*game::levelEntityId}; + state["io"]["fileexists"] = utils::io::file_exists; + state["io"]["writefile"] = utils::io::write_file; + state["io"]["filesize"] = utils::io::file_size; + state["io"]["createdirectory"] = utils::io::create_directory; + state["io"]["directoryexists"] = utils::io::directory_exists; + state["io"]["directoryisempty"] = utils::io::directory_is_empty; + state["io"]["listfiles"] = utils::io::list_files; + state["io"]["copyfolder"] = utils::io::copy_folder; + state["io"]["readfile"] = static_cast(utils::io::read_file); + auto vector_type = state.new_usertype("vector", sol::constructors()); vector_type["x"] = sol::property(&vector::get_x, &vector::set_x); vector_type["y"] = sol::property(&vector::get_y, &vector::set_y); diff --git a/src/client/game/ui_scripting/lua/context.cpp b/src/client/game/ui_scripting/lua/context.cpp index 212c354f..ee0a586d 100644 --- a/src/client/game/ui_scripting/lua/context.cpp +++ b/src/client/game/ui_scripting/lua/context.cpp @@ -10,6 +10,7 @@ #include #include +#include namespace ui_scripting::lua { @@ -65,7 +66,7 @@ namespace ui_scripting::lua { for (const auto c : name) { - if (!isalnum(c)) + if (!isalnum(c) && c != '_') { return false; } @@ -76,6 +77,16 @@ namespace ui_scripting::lua void setup_types(sol::state& state, event_handler& handler, scheduler& scheduler) { + state["io"]["fileexists"] = utils::io::file_exists; + state["io"]["writefile"] = utils::io::write_file; + state["io"]["filesize"] = utils::io::file_size; + state["io"]["createdirectory"] = utils::io::create_directory; + state["io"]["directoryexists"] = utils::io::directory_exists; + state["io"]["directoryisempty"] = utils::io::directory_is_empty; + state["io"]["listfiles"] = utils::io::list_files; + state["io"]["copyfolder"] = utils::io::copy_folder; + state["io"]["readfile"] = static_cast(utils::io::read_file); + auto vector_type = state.new_usertype("vector", sol::constructors()); vector_type["x"] = sol::property(&scripting::vector::get_x, &scripting::vector::set_x); vector_type["y"] = sol::property(&scripting::vector::get_y, &scripting::vector::set_y); diff --git a/src/client/main.cpp b/src/client/main.cpp index 6fee7ef4..83172fa9 100644 --- a/src/client/main.cpp +++ b/src/client/main.cpp @@ -39,7 +39,6 @@ launcher::mode detect_mode_from_arguments() return launcher::mode::none; } - FARPROC load_binary(const launcher::mode mode, uint64_t* base_address) { loader loader;