PkmnLib/src/ScriptResolving/AngelScript/AngelScriptItemUseScript.cpp

90 lines
4.0 KiB
C++

#include "AngelScriptItemUseScript.hpp"
#include "AngelScriptFunctionCall.hpp"
#include "AngelScriptResolver.hpp"
#include "AngelscriptUserdata.hpp"
NativeArray<ArbUt::List<CreatureLib::Library::EffectParameter*>>*
AngelScriptItemUseScript::GetEffectParameters(const ArbUt::List<CreatureLib::Library::EffectParameter*>& ls) {
return new NativeArray<ArbUt::List<CreatureLib::Library::EffectParameter*>>(&ls);
}
void AngelScriptItemUseScript::OnInitialize(const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters) {
if (__OnInitialize.Exists) {
AngelScriptUtils::AngelscriptFunctionCall(
__OnInitialize.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {
auto* arr = GetEffectParameters(parameters);
ctx->SetArgAddress(0, arr);
},
[&]([[maybe_unused]] asIScriptContext* ctx) {});
}
}
bool AngelScriptItemUseScript::IsItemUsable() const {
if (!__IsItemUsable.Exists) {
return CreatureLib::Battling::ItemUseScript::IsItemUsable();
}
bool res = false;
AngelScriptUtils::AngelscriptFunctionCall(
__IsItemUsable.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {},
[&]([[maybe_unused]] asIScriptContext* ctx) { res = ctx->GetReturnByte() == 1; });
return res;
}
bool AngelScriptItemUseScript::IsCreatureUseItem() const {
if (!__IsPokemonUseItem.Exists) {
return CreatureLib::Battling::ItemUseScript::IsCreatureUseItem();
}
bool res = false;
AngelScriptUtils::AngelscriptFunctionCall(
__IsPokemonUseItem.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {},
[&]([[maybe_unused]] asIScriptContext* ctx) { res = ctx->GetReturnByte() == 1; });
return res;
}
bool AngelScriptItemUseScript::IsUseValidForCreature(CreatureLib::Battling::Creature* creature) const {
if (!__IsUseValidForPokemon.Exists) {
return CreatureLib::Battling::ItemUseScript::IsUseValidForCreature(creature);
}
bool res = false;
AngelScriptUtils::AngelscriptFunctionCall(
__IsUseValidForPokemon.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) { ctx->SetArgObject(0, (void*)creature); },
[&]([[maybe_unused]] asIScriptContext* ctx) { res = ctx->GetReturnByte() == 1; });
return res;
}
bool AngelScriptItemUseScript::IsHoldable() const {
if (!__IsHoldable.Exists) {
return CreatureLib::Battling::ItemUseScript::IsHoldable();
}
bool res = false;
AngelScriptUtils::AngelscriptFunctionCall(
__IsHoldable.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {},
[&]([[maybe_unused]] asIScriptContext* ctx) { res = ctx->GetReturnByte() == 1; });
return res;
}
void AngelScriptItemUseScript::OnUse(CreatureLib::Battling::Battle* battle) const {
if (!__OnUse.Exists) {
CreatureLib::Battling::ItemUseScript::OnUse(battle);
}
AngelScriptUtils::AngelscriptFunctionCall(
__OnUse.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {
ctx->SetArgObject(0, battle);
}, [&]([[maybe_unused]] asIScriptContext* ctx) {});
}
void AngelScriptItemUseScript::OnCreatureUse(CreatureLib::Battling::Creature* creature, bool isBattle) const {
if (!__OnPokemonUse.Exists) {
CreatureLib::Battling::ItemUseScript::OnCreatureUse(creature, isBattle);
}
AngelScriptUtils::AngelscriptFunctionCall(
__OnPokemonUse.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
[&]([[maybe_unused]] asIScriptContext* ctx) {
ctx->SetArgObject(0, (void*)creature);
ctx->SetArgByte(1, isBattle);
},
[&]([[maybe_unused]] asIScriptContext* ctx) {});
}