From 1a00a91b604399f3108aa995422d371e573e650b Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sun, 24 Nov 2024 12:54:05 +0300 Subject: [PATCH] fix: commands repository not reset before world open --- src/engine.cpp | 1 + src/logic/CommandsInterpreter.hpp | 9 +++++++++ src/logic/scripting/scripting.cpp | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/engine.cpp b/src/engine.cpp index f08175a1..6f0d7b6f 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -362,6 +362,7 @@ void Engine::loadContent() { load_configs(pack.folder); } content = contentBuilder.build(); + interpreter->reset(); scripting::on_content_load(content.get()); ContentLoader::loadScripts(*content); diff --git a/src/logic/CommandsInterpreter.hpp b/src/logic/CommandsInterpreter.hpp index ce9ccaba..9d7095c9 100644 --- a/src/logic/CommandsInterpreter.hpp +++ b/src/logic/CommandsInterpreter.hpp @@ -125,6 +125,10 @@ namespace cmd { const std::unordered_map& getCommands() const { return commands; } + + void clear() { + commands.clear(); + } }; class CommandsInterpreter { @@ -158,5 +162,10 @@ namespace cmd { CommandsRepository* getRepository() const { return repository.get(); } + + void reset() { + repository->clear(); + variables.clear(); + } }; } diff --git a/src/logic/scripting/scripting.cpp b/src/logic/scripting/scripting.cpp index 055ecf34..a9ecdb48 100644 --- a/src/logic/scripting/scripting.cpp +++ b/src/logic/scripting/scripting.cpp @@ -68,7 +68,6 @@ void scripting::initialize(Engine* engine) { lua::initialize(*engine->getPaths()); load_script(fs::path("stdlib.lua"), true); - load_script(fs::path("stdcmd.lua"), true); load_script(fs::path("classes.lua"), true); } @@ -172,6 +171,7 @@ void scripting::on_content_load(Content* content) { lua::setfield(L, "materials"); lua::pop(L); } + load_script(fs::path("stdcmd.lua"), true); } void scripting::on_world_load(LevelController* controller) {