Rework script handling to use smart pointers properly
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
#define BORROWED_GET_FUNC(type, name, returnType) \
|
||||
export_func returnType CreatureLib_##type##_##name(const type* p) { return p->name().GetRaw(); }
|
||||
#define OPTIONAL_GET_FUNC(type, name, returnType) \
|
||||
export_func returnType CreatureLib_##type##_##name(const type* p) { \
|
||||
export_func returnType CreatureLib_##type##_##name(type* p) { \
|
||||
if (p->name().HasValue()) \
|
||||
return p->name().GetValue(); \
|
||||
return nullptr; \
|
||||
|
||||
Reference in New Issue
Block a user