From 6032610de6d090bd14664810d83828ec9faf711a Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Thu, 13 Feb 2020 13:59:07 +0100 Subject: [PATCH] Add script category to script creation function in AngelScript. --- conanfile.py | 2 +- .../AngelScript/AngelScripResolver.cpp | 4 ++-- .../AngelScript/AngelScripResolver.hpp | 8 +++++--- tests/ScriptTests/BaseScriptClassTests.cpp | 6 ++++-- tests/ScriptTests/ScriptResolverTests.cpp | 18 +++++++++--------- .../ScriptTypeTests/Battle/PokemonTests.cpp | 6 ++++-- .../ScriptTypeTests/Library/FormesTests.cpp | 6 ++++-- .../ScriptTypeTests/Library/ItemDataTests.cpp | 6 ++++-- .../ScriptTypeTests/Library/MoveTests.cpp | 6 ++++-- .../ScriptTypeTests/Library/SpeciesTests.cpp | 6 ++++-- .../Library/StaticLibraryTests.cpp | 6 ++++-- 11 files changed, 45 insertions(+), 29 deletions(-) diff --git a/conanfile.py b/conanfile.py index 5acae0d..8c3edf9 100644 --- a/conanfile.py +++ b/conanfile.py @@ -44,7 +44,7 @@ class PkmnLibConan(ConanFile): self.options["AngelScript"].link_std_statically = True def requirements(self): - self.requires("CreatureLib/42050de18a9315921397d1da75b99671013203be@creaturelib/master") + self.requires("CreatureLib/2dcb197191f8e26a106c032f09476073cce0f2df@creaturelib/master") if self.options.script_handler == "angelscript": self.requires("AngelScript/2.34@AngelScript/Deukhoofd") else: diff --git a/src/ScriptResolving/AngelScript/AngelScripResolver.cpp b/src/ScriptResolving/AngelScript/AngelScripResolver.cpp index 69a0c85..f73aa9b 100644 --- a/src/ScriptResolving/AngelScript/AngelScripResolver.cpp +++ b/src/ScriptResolving/AngelScript/AngelScripResolver.cpp @@ -110,7 +110,7 @@ void AngelScripResolver::FinalizeModule() { if (r < 0) throw CreatureException("Building Script Module failed."); } -void AngelScripResolver::CreateScript(const char* scriptName) { - auto scriptString = _loadFunc(scriptName); +void AngelScripResolver::CreateScript(ScriptCategory category, const char* scriptName) { + auto scriptString = _loadFunc(category, scriptName); _mainModule->AddScriptSection(scriptName, scriptString); } diff --git a/src/ScriptResolving/AngelScript/AngelScripResolver.hpp b/src/ScriptResolving/AngelScript/AngelScripResolver.hpp index bcc7382..9d823bd 100644 --- a/src/ScriptResolving/AngelScript/AngelScripResolver.hpp +++ b/src/ScriptResolving/AngelScript/AngelScripResolver.hpp @@ -15,7 +15,7 @@ private: asIScriptEngine* _engine = nullptr; asIScriptModule* _mainModule = nullptr; ContextPool* _contextPool = nullptr; - const char* (*_loadFunc)(const char*) = nullptr; + const char* (*_loadFunc)(ScriptCategory category, const char*) = nullptr; std::unordered_map _types; static void MessageCallback(const asSMessageInfo* msg, void* param); @@ -36,9 +36,11 @@ public: void Initialize(CreatureLib::Battling::BattleLibrary* library) override; - void SetCreateFunction(const char* (*loadFunc)(const char* scriptName)) { _loadFunc = loadFunc; } + void SetCreateFunction(const char* (*loadFunc)(ScriptCategory category, const char* scriptName)) { + _loadFunc = loadFunc; + } - void CreateScript(const char* scriptName); + void CreateScript(ScriptCategory category, const char* scriptName); void FinalizeModule(); diff --git a/tests/ScriptTests/BaseScriptClassTests.cpp b/tests/ScriptTests/BaseScriptClassTests.cpp index 0d9303a..8c33073 100644 --- a/tests/ScriptTests/BaseScriptClassTests.cpp +++ b/tests/ScriptTests/BaseScriptClassTests.cpp @@ -59,7 +59,9 @@ void StopBeforeAttack(ExecutingMove@ attack, bool& result) override{ }; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} static AngelScripResolver* _resolverCache = nullptr; static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* mainLib) { @@ -68,7 +70,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); for (auto kv : _scripts) { - _resolverCache->CreateScript(kv.first); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack, kv.first); } _resolverCache->FinalizeModule(); } diff --git a/tests/ScriptTests/ScriptResolverTests.cpp b/tests/ScriptTests/ScriptResolverTests.cpp index 6e7aab3..79cc501 100644 --- a/tests/ScriptTests/ScriptResolverTests.cpp +++ b/tests/ScriptTests/ScriptResolverTests.cpp @@ -4,8 +4,7 @@ #include "../TestLibrary/TestLibrary.hpp" static std::unordered_map _scripts = - std::unordered_map{ - {"testScript1", R"( + std::unordered_map{{"testScript1", R"( class testScript1 { int add(int a, int b) { return a + b; @@ -17,10 +16,11 @@ class testScript1 { } } } -)"} -}; +)"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} TEST_CASE("Get a script resolver, initialize it, then delete it") { auto lib = PkmnLib::Battling::BattleLibrary::CreateScriptResolver(); @@ -39,7 +39,7 @@ TEST_CASE("Get a script resolver, set script load function, load script, then bu auto lib = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); lib->Initialize(TestLibrary::GetLibrary()); lib->SetCreateFunction(&_testLoadFunc); - lib->CreateScript("testScript1"); + lib->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); lib->FinalizeModule(); delete lib; } @@ -48,7 +48,7 @@ TEST_CASE("Build script resolver, then create object") { auto lib = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); lib->Initialize(TestLibrary::GetLibrary()); lib->SetCreateFunction(&_testLoadFunc); - lib->CreateScript("testScript1"); + lib->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); lib->FinalizeModule(); auto obj = lib->LoadScript(AngelScripResolver::ScriptCategory::Creature, "testScript1"); @@ -61,7 +61,7 @@ TEST_CASE("Build script resolver, create object, invoke addition method") { auto lib = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); lib->Initialize(TestLibrary::GetLibrary()); lib->SetCreateFunction(&_testLoadFunc); - lib->CreateScript("testScript1"); + lib->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); lib->FinalizeModule(); auto obj = @@ -76,7 +76,7 @@ TEST_CASE("Build script resolver, create object, invoke addition method") { ctx->SetArgDWord(1, 100); auto result = ctx->Execute(); - if (result == asEXECUTION_EXCEPTION){ + if (result == asEXECUTION_EXCEPTION) { FAIL(ctx->GetExceptionString()); } CHECK(result == asEXECUTION_FINISHED); diff --git a/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp b/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp index 169e26d..06515ac 100644 --- a/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp @@ -26,7 +26,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script = nullptr; @@ -46,7 +48,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache; diff --git a/tests/ScriptTests/ScriptTypeTests/Library/FormesTests.cpp b/tests/ScriptTests/ScriptTypeTests/Library/FormesTests.cpp index 9566e69..777f564 100644 --- a/tests/ScriptTests/ScriptTypeTests/Library/FormesTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Library/FormesTests.cpp @@ -17,7 +17,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script = nullptr; @@ -37,7 +39,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache; diff --git a/tests/ScriptTests/ScriptTypeTests/Library/ItemDataTests.cpp b/tests/ScriptTests/ScriptTypeTests/Library/ItemDataTests.cpp index 1118e78..8027d1c 100644 --- a/tests/ScriptTests/ScriptTypeTests/Library/ItemDataTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Library/ItemDataTests.cpp @@ -13,7 +13,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script = nullptr; @@ -33,7 +35,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache; diff --git a/tests/ScriptTests/ScriptTypeTests/Library/MoveTests.cpp b/tests/ScriptTests/ScriptTypeTests/Library/MoveTests.cpp index 4777083..8803579 100644 --- a/tests/ScriptTests/ScriptTypeTests/Library/MoveTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Library/MoveTests.cpp @@ -17,7 +17,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script = nullptr; @@ -37,7 +39,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache; diff --git a/tests/ScriptTests/ScriptTypeTests/Library/SpeciesTests.cpp b/tests/ScriptTests/ScriptTypeTests/Library/SpeciesTests.cpp index 30798f9..906db7d 100644 --- a/tests/ScriptTests/ScriptTypeTests/Library/SpeciesTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Library/SpeciesTests.cpp @@ -15,7 +15,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script; @@ -35,7 +37,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache; diff --git a/tests/ScriptTests/ScriptTypeTests/Library/StaticLibraryTests.cpp b/tests/ScriptTests/ScriptTypeTests/Library/StaticLibraryTests.cpp index 2496b6e..6a2e672 100644 --- a/tests/ScriptTests/ScriptTypeTests/Library/StaticLibraryTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Library/StaticLibraryTests.cpp @@ -16,7 +16,9 @@ class testScript1 { } )"}}; -static const char* _testLoadFunc(const char* name) { return _scripts[name]; } +static const char* _testLoadFunc(CreatureLib::Battling::ScriptResolver::ScriptCategory category, const char* name) { + return _scripts[name]; +} struct ScriptData { AngelScriptScript* Script; @@ -36,7 +38,7 @@ static AngelScripResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary* m _resolverCache = dynamic_cast(PkmnLib::Battling::BattleLibrary::CreateScriptResolver()); _resolverCache->Initialize(mainLib); _resolverCache->SetCreateFunction(&_testLoadFunc); - _resolverCache->CreateScript("testScript1"); + _resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1"); _resolverCache->FinalizeModule(); } return _resolverCache;