#include "../../src/Battling/Models/Battle.hpp" #include "../Core.hpp" using namespace CreatureLib::Battling; export uint8_t CreatureLib_Battle_Construct(Battle*& out, const BattleLibrary* library, BattleParty* partyArr[], size_t numberOfParties, bool canFlee, uint8_t numberOfSides, uint8_t creaturesPerSide) { Try(List parties(partyArr, partyArr + numberOfParties); out = new Battle(library, parties, canFlee, numberOfSides, creaturesPerSide);) } export void CreatureLib_Battle_Destruct(const Battle* p) { delete p; } export const BattleLibrary* CreatureLib_Battle_GetLibrary(const Battle* p) { return p->GetLibrary(); } export uint8_t CreatureLib_Battle_CanUse(bool& out, Battle* p, const BaseTurnChoice* turnChoice) { Try(out = p->CanUse(turnChoice);) } export uint8_t CreatureLib_Battle_TrySetChoice(bool& out, Battle* p, BaseTurnChoice* turnChoice) { Try(out = p->TrySetChoice(turnChoice);) } export bool CreatureLib_Battle_CanFlee(const Battle* p) { return p->CanFlee(); } export uint8_t CreatureLib_Battle_CheckChoicesSetAndRun(Battle* p) { Try(p->CheckChoicesSetAndRun();) } export ChoiceQueue* CreatureLib_Battle_GetCurrentTurnQueue(const Battle* p) { return p->GetCurrentTurnQueue(); } export BattleRandom* CreatureLib_Battle_GetRandom(Battle* p) { return p->GetRandom(); } export uint8_t CreatureLib_Battle_CreatureInField(bool& out, const Battle* p, Creature* c) { Try(out = p->CreatureInField(c);) } export uint8_t CreatureLib_Battle_GetCreature(Creature*& out, const Battle* p, uint8_t side, uint8_t target) { Try(out = p->GetCreature(side, target);) } export uint8_t CreatureLib_Battle_ForceRecall(Battle* p, uint8_t side, uint8_t target) { Try(p->ForceRecall(side, target);) } export uint8_t CreatureLib_Battle_SwitchCreature(Battle* p, uint8_t side, uint8_t target, Creature* c) { Try(p->SwitchCreature(side, target, c);) } export uint8_t CreatureLib_Battle_CanSlotBeFilled(bool& out, const Battle* p, uint8_t side, uint8_t target) { Try(out = p->CanSlotBeFilled(side, target);) } export uint8_t CreatureLib_Battle_ValidateBattleState(Battle* p) { Try(p->ValidateBattleState();) } export bool CreatureLib_Battle_HasEnded(const Battle* p) { return p->HasEnded(); } export bool CreatureLib_Battle_HasConclusiveResult(const Battle* p) { return p->GetResult().IsConclusiveResult(); } export bool CreatureLib_Battle_GetWinningSide(const Battle* p) { return p->GetResult().GetWinningSide(); } export size_t CreatureLib_Battle_GetSidesCount(const Battle* p) { return p->GetSides().Count(); } export BattleSide* const* CreatureLib_Battle_GetSides(const Battle* p) { return p->GetSides().RawData(); } export Script* CreatureLib_Battle_GetVolatileScript(Battle* p, const char* key) { return p->GetVolatileScript(ConstString::GetHash(key)); } export uint8_t CreatureLib_Battle_AddVolatileScriptByName(Battle* p, const char* key) { Try(p->AddVolatileScript(ConstString(key));) } export uint8_t CreatureLib_Battle_AddVolatileScript(Battle* p, Script* script) { Try(p->AddVolatileScript(script);) } export uint8_t CreatureLib_Battle_RemoveVolatileScript(Battle* p, const char* key) { Try(p->RemoveVolatileScript(ConstString::GetHash(key));) } export uint8_t CreatureLib_Battle_RemoveVolatileScriptWithScript(Battle* p, Script* script) { Try(p->RemoveVolatileScript(script);) } export bool CreatureLib_Battle_HasVolatileScript(Battle* p, const char* key) { return p->HasVolatileScript(ConstString::GetHash(key)); } export uint8_t CreatureLib_Battle_RegisterEventListener(Battle* p, void (*func)(const EventData*)) { Try(p->RegisterEventListener(func);) } export uint8_t CreatureLib_Battle_TriggerEventListener(Battle* p, EventData* data) { Try(p->TriggerEventListener(data);) }