Supports cloning battles for AI purposes.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2021-04-11 16:27:21 +02:00
parent 14016837d9
commit a88719e2b3
8 changed files with 129 additions and 6 deletions

View File

@@ -294,9 +294,19 @@ void AngelScriptScript::PreventOpponentSwitch(const CreatureLib::Battling::Switc
void AngelScriptScript::OnEndTurn(CreatureLib::Battling::Creature* creature) {
CALL_HOOK(OnEndTurn, { ctx->SetArgObject(0, (void*)creature); })
}
void AngelScriptScript::ModifyNumberOfHits(CreatureLib::Battling::AttackTurnChoice* choice, u8* numberOfHits) {
CALL_HOOK(ModifyNumberOfHits, {
ctx->SetArgObject(0, (void*)choice);
ctx->SetArgAddress(1, numberOfHits);
})
void AngelScriptScript::ModifyNumberOfHits(CreatureLib::Battling::AttackTurnChoice* choice,
u8* numberOfHits){CALL_HOOK(ModifyNumberOfHits,
{
ctx->SetArgObject(0, (void*)choice);
ctx->SetArgAddress(1, numberOfHits);
})}
CreatureLib::Battling::BattleScript* AngelScriptScript::Clone() {
auto* ctx = _ctxPool->RequestContext();
auto* obj = _type->Instantiate(ctx);
if (_obj != nullptr){
obj->CopyFrom(_obj);
}
_ctxPool->ReturnContextToPool(ctx);
return new AngelScriptScript(_resolver, _type, obj, _ctxPool);
}

View File

@@ -25,6 +25,8 @@ public:
~AngelScriptScript() override { _obj->Release(); }
BattleScript* Clone() override;
inline asIScriptObject* GetRawAngelscriptObject() const noexcept { return _obj; }
[[nodiscard]] const ArbUt::StringView& GetName() const noexcept override { return _type->GetName(); }