Add script category to script creation function in AngelScript.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
eeedbdac03
commit
6032610de6
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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<std::string, AngelScriptTypeInfo*> _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();
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -4,8 +4,7 @@
|
|||
#include "../TestLibrary/TestLibrary.hpp"
|
||||
|
||||
static std::unordered_map<const char*, const char*> _scripts =
|
||||
std::unordered_map<const char*, const char*>{
|
||||
{"testScript1", R"(
|
||||
std::unordered_map<const char*, const char*>{{"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<AngelScripResolver*>(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<AngelScripResolver*>(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<AngelScripResolver*>(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);
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
|
@ -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<AngelScripResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
_resolverCache->Initialize(mainLib);
|
||||
_resolverCache->SetCreateFunction(&_testLoadFunc);
|
||||
_resolverCache->CreateScript("testScript1");
|
||||
_resolverCache->CreateScript(AngelScripResolver::ScriptCategory::Attack ,"testScript1");
|
||||
_resolverCache->FinalizeModule();
|
||||
}
|
||||
return _resolverCache;
|
||||
|
|
Loading…
Reference in New Issue