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

@@ -6,7 +6,8 @@ void BasicScriptClass::Register(asIScriptEngine* engine) {
// registry interface. As such, we just create it from string.
[[maybe_unused]] int r = engine->GetModuleByIndex(0)->AddScriptSection("PkmnScript", R"(
shared abstract class PkmnScript {
// CreatureLib methods
// CreatureLib methods
void OnInitialize(const array<EffectParameter@> &in parameters){};
void Stack(){};
void OnRemove(){};
void PreventAttack(ExecutingMove@ attack, bool& result){};
@@ -33,10 +34,9 @@ shared abstract class PkmnScript {
void ModifyDamageModifier(ExecutingMove@ attack, Pokemon@ target, uint8 hit, float& modifier){};
void OverrideDamage(ExecutingMove@ attack, Pokemon@ target, uint8 hit, uint& damage){};
// PkmnLib methods
// PkmnLib methods
void ModifyCriticalStage(ExecutingMove@ attack, Pokemon@ target, uint8 hit, uint8& critStage){};
}
)");
assert(r >= 0);
}

View File

@@ -0,0 +1,38 @@
#include "RegisterEffectParameter.hpp"
#include <Arbutils/Assert.hpp>
#include <CreatureLib/Library/EffectParameter.hpp>
static CreatureLib::Library::EffectParameter* Ref_Factory() { return new CreatureLib::Library::EffectParameter(); }
static std::string AsString(const CreatureLib::Library::EffectParameter* p) { return p->AsString(); }
void RegisterEffectParameter::Register(asIScriptEngine* engine) {
[[maybe_unused]] int r = engine->RegisterEnum("EffectParameterType");
Assert(r >= 0);
for (auto val : CreatureLib::Library::EffectParameterTypeHelper::GetValues()) {
r = engine->RegisterEnumValue("EffectParameterType",
CreatureLib::Library::EffectParameterTypeHelper::ToString(val), (int)val);
Assert(r >= 0);
}
r = engine->RegisterObjectType("EffectParameter", 0, asOBJ_REF | asOBJ_NOCOUNT);
Assert(r >= 0);
r = engine->RegisterObjectBehaviour("EffectParameter", asBEHAVE_FACTORY, "EffectParameter@ f()",
asFUNCTION(Ref_Factory), asCALL_CDECL);
Assert(r >= 0);
r = engine->RegisterObjectMethod("EffectParameter", "EffectParameterType GetType() const",
asMETHOD(CreatureLib::Library::EffectParameter, GetType), asCALL_THISCALL);
Assert(r >= 0);
r = engine->RegisterObjectMethod("EffectParameter", "bool AsBool() const",
asMETHOD(CreatureLib::Library::EffectParameter, AsBool), asCALL_THISCALL);
Assert(r >= 0);
r = engine->RegisterObjectMethod("EffectParameter", "int64 AsInt() const",
asMETHOD(CreatureLib::Library::EffectParameter, AsInt), asCALL_THISCALL);
Assert(r >= 0);
r = engine->RegisterObjectMethod(
"EffectParameter", "string AsString() const",
asFUNCTIONPR(AsString, (const CreatureLib::Library::EffectParameter*), std::string), asCALL_CDECL_OBJFIRST);
Assert(r >= 0);
}

View File

@@ -0,0 +1,10 @@
#ifndef PKMNLIB_REGISTEREFFECTPARAMETER_HPP
#define PKMNLIB_REGISTEREFFECTPARAMETER_HPP
#include <angelscript.h>
class RegisterEffectParameter {
public:
static void Register(asIScriptEngine* engine);
};
#endif // PKMNLIB_REGISTEREFFECTPARAMETER_HPP