Implements new Effect Parameters in AngelScript/
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-04-10 20:39:11 +02:00
parent 0700f7cfbd
commit d12267c695
7 changed files with 153 additions and 4 deletions

View File

@@ -4,6 +4,7 @@
#define ANGELSCRIPT_DLL_LIBRARY_IMPORT
#include <CreatureLib/Library/Exceptions/NotImplementedException.hpp>
#include <angelscript.h>
#include "../../../extern/angelscript_addons/scriptarray/scriptarray.h"
#include "../../Battling/PkmnScript.hpp"
#include "AngelScriptTypeInfo.hpp"
#include "ContextPool.hpp"
@@ -73,6 +74,28 @@ public:
ctx->PopState(); \
}
static CScriptArray*
GetEffectParameters(asIScriptContext* ctx,
const Arbutils::Collections::List<CreatureLib::Library::EffectParameter*>& ls) {
asIScriptEngine* engine = ctx->GetEngine();
asITypeInfo* t = engine->GetTypeInfoByDecl("array<EffectParameter@>");
CScriptArray* arr = CScriptArray::Create(t, ls.Count());
for (size_t i = 0; i < ls.Count(); i++) {
arr->SetValue(i, (void**)&ls[i]);
}
return arr;
}
void OnInitialize(const Arbutils::Collections::List<CreatureLib::Library::EffectParameter*>& parameters) override {
CScriptArray* arr = nullptr;
CALL_HOOK(OnInitialize, {
arr = GetEffectParameters(ctx, parameters);
ctx->SetArgAddress(0, arr);
})
if (arr != nullptr){
arr->Release();
}
}
void Stack() override { CALL_HOOK(Stack, ); }
void OnRemove() override { CALL_HOOK(OnRemove, ); }