CreatureLib/src/Battling/Models/CreatureParty.hpp

45 lines
1.1 KiB
C++
Raw Normal View History

2019-11-28 11:16:03 +00:00
#ifndef CREATURELIB_CREATUREPARTY_HPP
#define CREATURELIB_CREATUREPARTY_HPP
#include <array>
#include "Creature.hpp"
namespace CreatureLib::Battling {
class CreatureParty {
std::vector<Creature*> _party;
2019-11-28 11:16:03 +00:00
public:
CreatureParty(std::vector<Creature*> party) : _party(party) {}
CreatureParty(std::initializer_list<Creature*> party) : _party(party) {}
~CreatureParty() {
for (auto c : _party) {
delete c;
}
}
2019-11-28 11:16:03 +00:00
Creature* GetAtIndex(int index) const { return _party[index]; }
2019-11-28 11:16:03 +00:00
void Switch(int a, int b) {
2019-11-28 11:16:03 +00:00
auto ca = _party[a];
_party[a] = _party[b];
_party[b] = ca;
}
bool HasAvailableCreatures() const {
for (Creature* c : _party) {
if (c == nullptr)
continue;
if (c->IsFainted())
continue;
2019-11-28 11:16:03 +00:00
return true;
}
return false;
}
std::vector<Creature*>& GetParty() { return _party; }
2019-11-28 11:16:03 +00:00
};
}
#endif // CREATURELIB_CREATUREPARTY_HPP