101 lines
4.6 KiB
C++
101 lines
4.6 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) {});
|
|
}
|
|
void AngelScriptItemUseScript::ModifyPokeballCatchBonus(PkmnLib::Battling::Pokemon* pokemon, u8* catchBonus) const {
|
|
if (!__ModifyPokeballCatchBonus.Exists) {
|
|
return;
|
|
}
|
|
AngelScriptUtils::AngelscriptFunctionCall(
|
|
__ModifyPokeballCatchBonus.Function, _resolver->GetContextPool(), _scriptObject, _resolver, ""_cnc,
|
|
[&]([[maybe_unused]] asIScriptContext* ctx) {
|
|
ctx->SetArgObject(0, (void*)pokemon);
|
|
ctx->SetArgAddress(1, catchBonus);
|
|
},
|
|
[&]([[maybe_unused]] asIScriptContext* ctx) {});
|
|
}
|