Rework script handling to use smart pointers properly
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2022-05-14 16:07:32 +02:00
parent 0117cb9d64
commit de6d39376f
17 changed files with 85 additions and 77 deletions

View File

@@ -7,10 +7,14 @@ export_func u8 CreatureLib_ExecutingAttack_Construct(ExecutingAttack*& out, Crea
LearnedAttack* attack,
CreatureLib::Library::AttackData* attackData,
BattleScript* script) {
Try(auto ls = ArbUt::List<ArbUt::OptionalBorrowedPtr<Creature>>(targetCount);
for (size_t i = 0; i < targetCount; i++) { ls.Append(targets[i]); } auto s =
std::unique_ptr<BattleScript>(script);
out = new ExecutingAttack(ls, numberHits, user, attack, attackData, s);)
Try({
auto ls = ArbUt::List<ArbUt::OptionalBorrowedPtr<Creature>>(targetCount);
for (size_t i = 0; i < targetCount; i++) {
ls.Append(targets[i]);
}
auto s = ArbUt::OptionalUniquePtr<BattleScript>(script);
out = new ExecutingAttack(ls, numberHits, user, attack, attackData, s);
})
}
export_func void CreatureLib_ExecutingAttack_Destruct(ExecutingAttack* p) { delete p; }

View File

@@ -11,7 +11,7 @@ export_func u8 CreatureLib_ScriptResolver_Initialize(ScriptResolver* p, BattleLi
};
export_func u8 CreatureLib_ScriptResolver_LoadScript(BattleScript*& out, ScriptResolver* p, void* owner,
ScriptCategory category, const char* scriptName) {
Try(out = p->LoadScript(owner, category, ArbUt::StringView(scriptName));)
Try(out = p->LoadScript(owner, category, ArbUt::StringView(scriptName)).TakeOwnership();)
};
export_func u8 CreatureLib_ScriptResolver_LoadItemScript(ItemUseScript*& out, ScriptResolver* p,

View File

@@ -39,7 +39,7 @@ SIMPLE_GET_FUNC(AttackTurnChoice, GetKind, TurnChoiceKind)
export_func u8 CreatureLib_AttackTurnChoice_GetPriority(i8& out, AttackTurnChoice* p) { Try(out = p->GetPriority()); }
SMART_GET_FUNC(AttackTurnChoice, GetAttackScript, BattleScript*)
OPTIONAL_GET_FUNC(AttackTurnChoice, GetAttackScript, BattleScript*)
export_func u8 CreatureLib_AttackTurnChoice_GetTargetSideIndex(const AttackTurnChoice* p) {
return p->GetTarget().GetSideIndex();
}