#ifndef PKMNLIB_POKEMONPARTY_HPP #define PKMNLIB_POKEMONPARTY_HPP #include #include "Pokemon.hpp" namespace PkmnLib::Battling { class PokemonParty : public CreatureLib::Battling::CreatureParty { public: PokemonParty(ArbUt::List party) : CreatureLib::Battling::CreatureParty(std::move(party)) {} PokemonParty(std::initializer_list party) : CreatureLib::Battling::CreatureParty(party) {} PokemonParty(size_t size) : CreatureLib::Battling::CreatureParty(size) {} ArbUt::OptionalBorrowedPtr GetAtIndex(size_t index) const { return CreatureLib::Battling::CreatureParty::GetAtIndex(index).As(); } CreatureParty* non_null Clone() const override { auto party = new PokemonParty(GetParty().Count()); auto i = 0; for (auto c : GetParty()) { if (c != nullptr) { party->SwapInto(i, c->Clone()); i++; } } return party; } }; } #endif // PKMNLIB_POKEMONPARTY_HPP