diff --git a/CInterface/Battling/CreatureParty.cpp b/CInterface/Battling/CreatureParty.cpp index 857f600..5d000a7 100644 --- a/CInterface/Battling/CreatureParty.cpp +++ b/CInterface/Battling/CreatureParty.cpp @@ -15,6 +15,10 @@ export uint8_t CreatureLib_CreatureParty_GetAtIndex(Creature*& out, const Creatu export uint8_t CreatureLib_CreatureParty_Switch(CreatureParty* p, size_t a, size_t b) { Try(p->Switch(a, b);) } +export Creature* CreatureLib_CreatureParty_SwapInto(CreatureParty* p, size_t index, Creature* creature) { + return p->SwapInto(index, creature); +} + export bool CreatureLib_CreatureParty_HasAvailableCreatures(const CreatureParty* p) { return p->HasAvailableCreatures(); } diff --git a/src/Battling/Models/CreatureParty.hpp b/src/Battling/Models/CreatureParty.hpp index a70b9cf..359009d 100644 --- a/src/Battling/Models/CreatureParty.hpp +++ b/src/Battling/Models/CreatureParty.hpp @@ -23,6 +23,12 @@ namespace CreatureLib::Battling { _party[b] = ca; } + Creature* SwapInto(size_t index, Creature* creature) { + auto p = _party.TakeOwnership(index); + _party.Set(index, creature); + return p; + } + bool HasAvailableCreatures() const noexcept { for (Creature* c : _party) { if (c == nullptr)