Merge pull request #821 from Xertis/main

Added script-listener to packs loading
This commit is contained in:
MihailRis 2026-04-03 20:59:21 +03:00 • committed by GitHub
commit 936a5c8525
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 99 additions and 3 deletions

View file

@ -627,6 +627,26 @@ void scripting::on_ui_close(UiDocument* layout, Inventory* inventory) {
});
}
void scripting::on_scripts_loading() {
auto L = lua::get_main_state();
for (auto& pack : content_control->getAllContentPacks()) {
lua::emit_event(L, pack.id + ":.onscriptsloading", [](auto L) {
return 0;
});
}
}
void scripting::on_content_loaded() {
auto L = lua::get_main_state();
for (auto& pack : content_control->getAllContentPacks()) {
lua::emit_event(L, pack.id + ":.oncontentloaded", [](auto L) {
return 0;
});
}
}
bool scripting::register_event(
int env, const std::string& name, const std::string& id
) {
@ -763,6 +783,19 @@ void scripting::load_world_script(
register_event(env, "on_inventory_closed", prefix + ":.inventoryclosed");
}
void scripting::load_content_script(
const scriptenv& senv,
const std::string& prefix,
const io::path& file,
const std::string& fileName
) {
int env = *senv;
lua::pop(lua::get_main_state(), load_script(env, "content", file, fileName));
register_event(env, "on_scripts_loading", prefix + ":.onscriptsloading");
register_event(env, "on_content_loaded", prefix + ":.oncontentloaded");
}
void scripting::load_layout_script(
const scriptenv& senv,
const std::string& prefix,

View file

@ -160,6 +160,12 @@ namespace scripting {
/// @brief Called on UI view close
void on_ui_close(UiDocument* layout, Inventory* inventory);
/// @brief Called on Content loading
void on_scripts_loading();
/// @brief Called on Content loading finish
void on_content_loaded();
/// @brief Load script associated with a Block
/// @param env environment
/// @param prefix pack id
@ -221,6 +227,13 @@ namespace scripting {
WorldFuncsSet& funcsset
);
void load_content_script(
const scriptenv& env,
const std::string& packid,
const io::path& file,
const std::string& fileName
);
/// @brief Load script associated with an UiDocument
/// @param env environment
/// @param prefix pack id