2019-11-28 11:16:03 +00:00
|
|
|
#ifndef CREATURELIB_CREATUREPARTY_HPP
|
|
|
|
#define CREATURELIB_CREATUREPARTY_HPP
|
|
|
|
|
|
|
|
#include <array>
|
|
|
|
#include "Creature.hpp"
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
namespace CreatureLib::Battling {
|
2019-12-05 11:56:41 +00:00
|
|
|
class CreatureParty {
|
|
|
|
std::vector<Creature*> _party;
|
2019-11-28 11:16:03 +00:00
|
|
|
|
|
|
|
public:
|
2019-12-05 11:56:41 +00:00
|
|
|
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
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
Creature* GetAtIndex(int index) const { return _party[index]; }
|
2019-11-28 11:16:03 +00:00
|
|
|
|
2019-11-28 11:55:22 +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;
|
|
|
|
}
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
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;
|
|
|
|
}
|
2019-12-05 11:56:41 +00:00
|
|
|
|
|
|
|
std::vector<Creature*>& GetParty() { return _party; }
|
2019-11-28 11:16:03 +00:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2019-11-28 11:55:22 +00:00
|
|
|
#endif // CREATURELIB_CREATUREPARTY_HPP
|