Implements new Effect Parameters in AngelScript/
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -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, ); }
|
||||
|
||||
Reference in New Issue
Block a user