Files
CreatureLib/src/Battling/Models/BattleParty.hpp
Deukhoofd e642f374b9
All checks were successful
continuous-integration/drone/push Build is passing
Update to latest Arbutils.
Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
2020-12-13 12:15:40 +01:00

47 lines
1.7 KiB
C++

#ifndef CREATURELIB_BATTLEPARTY_HPP
#define CREATURELIB_BATTLEPARTY_HPP
#include "CreatureIndex.hpp"
#include "CreatureParty.hpp"
namespace CreatureLib::Battling {
class BattleParty {
ArbUt::BorrowedPtr<CreatureParty> _party;
ArbUt::List<CreatureIndex> _responsibleIndices;
public:
BattleParty(CreatureParty* party, const ArbUt::List<CreatureIndex>& responsibleIndices)
: _party(party), _responsibleIndices(responsibleIndices) {}
inline const ArbUt::BorrowedPtr<CreatureParty>& GetParty() const { return _party; }
inline const ArbUt::List<CreatureIndex>& GetResponsibleIndices() const { return _responsibleIndices; }
inline bool IsResponsibleForIndex(const CreatureIndex& index) const {
return _responsibleIndices.Contains(index);
}
inline bool IsResponsibleForIndex(uint8_t side, uint8_t index) const {
return std::any_of(_responsibleIndices.begin(), _responsibleIndices.end(),
[side, index](const CreatureIndex& ci) {
return ci.GetSideIndex() == side && ci.GetCreatureIndex() == index;
});
}
inline bool HasCreaturesNotInField() const {
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