#ifndef CREATURELIB_BATTLEPARTY_HPP #define CREATURELIB_BATTLEPARTY_HPP #include #include #include "CreatureIndex.hpp" #include "CreatureParty.hpp" namespace CreatureLib::Battling { class BattleParty { CreatureParty* _party; ArbUt::List _responsibleIndices; public: BattleParty(CreatureParty* party, const ArbUt::List& responsibleIndices) : _party(party), _responsibleIndices(responsibleIndices) { AssertNotNull(_party) } inline CreatureParty* GetParty() const { return _party; } inline const ArbUt::List& GetResponsibleIndices() const { return _responsibleIndices; } inline bool IsResponsibleForIndex(const CreatureIndex& index) const { return _responsibleIndices.Contains(index); } bool IsResponsibleForIndex(uint8_t side, uint8_t index) const; inline bool HasCreaturesNotInField() const { auto& p = _party->GetParty(); for (const auto& creature : p) { if (creature == nullptr) continue; if (creature->IsFainted()) continue; if (creature->IsOnBattleField()) continue; return true; } return false; } }; } #endif // CREATURELIB_BATTLEPARTY_HPP