diff --git a/src/Battling/Pokemon/CreatePokemon.cpp b/src/Battling/Pokemon/CreatePokemon.cpp index 76ae5c9..95f38b9 100644 --- a/src/Battling/Pokemon/CreatePokemon.cpp +++ b/src/Battling/Pokemon/CreatePokemon.cpp @@ -73,13 +73,13 @@ PkmnLib::Battling::Pokemon* PkmnLib::Battling::CreatePokemon::Build() { auto experience = _library->GetGrowthRateLibrary()->CalculateExperience(species->GetGrowthRate(), _level); auto attacks = List(_attacks.Count()); - for (size_t i = 0; i < attacks.Count(); i++) { + for (size_t i = 0; i < _attacks.Count(); i++) { auto& kv = _attacks[i]; auto move = kv.Move; if (move != nullptr) - attacks[i] = new LearnedMove(move, kv.LearnMethod); + attacks.Append(new LearnedMove(move, kv.LearnMethod)); else - attacks[i] = nullptr; + attacks.Append(nullptr); } auto ivs = CreatureLib::Library::StatisticSet(_ivHp, _ivAttack, _ivDefense, _ivSpAtt, _ivSpDef, _ivSpeed); auto evs = CreatureLib::Library::StatisticSet(_evHp, _evAttack, _evDefense, _evSpAtt, _evSpDef, _evSpeed); @@ -158,8 +158,6 @@ PkmnLib::Battling::CreatePokemon::LearnMove(const Arbutils::CaseInsensitiveConst throw CreatureException("This pokemon already has the maximal allowed moves."); } Assert(move != nullptr); - auto& c = _attacks[_currentMove++]; - c.Move = move; - c.LearnMethod = method; + _attacks.Append(ToLearnMethod(move, method)); return *this; } diff --git a/src/Battling/Pokemon/CreatePokemon.hpp b/src/Battling/Pokemon/CreatePokemon.hpp index dade885..27c2032 100644 --- a/src/Battling/Pokemon/CreatePokemon.hpp +++ b/src/Battling/Pokemon/CreatePokemon.hpp @@ -22,6 +22,8 @@ namespace PkmnLib::Battling { const Library::MoveData* Move; CreatureLib::Battling::AttackLearnMethod LearnMethod; ToLearnMethod() : Move(nullptr), LearnMethod(CreatureLib::Battling::AttackLearnMethod::Unknown){}; + ToLearnMethod(const Library::MoveData* move, CreatureLib::Battling::AttackLearnMethod method) + : Move(move), LearnMethod(method){}; }; Arbutils::Collections::List _attacks; uint8_t _currentMove = 0; @@ -45,8 +47,7 @@ namespace PkmnLib::Battling { public: CreatePokemon(const BattleLibrary* library, const Arbutils::CaseInsensitiveConstString& species, uint8_t level) - : _library(library), _species(species), _level(level) { - _attacks.Resize(library->GetSettings()->GetMaximalMoves(), ToLearnMethod()); + : _library(library), _species(species), _level(level), _attacks(library->GetSettings()->GetMaximalMoves()) { } CreatePokemon WithForme(const Arbutils::CaseInsensitiveConstString& forme); @@ -54,15 +55,15 @@ namespace PkmnLib::Battling { CreatePokemon IsShiny(bool value); CreatePokemon WithHeldItem(const Arbutils::CaseInsensitiveConstString& item); CreatePokemon LearnMove(const Arbutils::CaseInsensitiveConstString& move, - CreatureLib::Battling::AttackLearnMethod method); + CreatureLib::Battling::AttackLearnMethod method); CreatePokemon WithRandomIndividualValues(Arbutils::Random rand = Arbutils::Random()); CreatePokemon WithIndividualValue(CreatureLib::Library::Statistic stat, uint8_t value); CreatePokemon WithIndividualValues(uint8_t hp, uint8_t att, uint8_t def, uint8_t spAtt, uint8_t spDef, - uint8_t speed); + uint8_t speed); CreatePokemon WithEffortValue(CreatureLib::Library::Statistic stat, uint8_t value); CreatePokemon WithEffortValues(uint8_t hp, uint8_t att, uint8_t def, uint8_t spAtt, uint8_t spDef, - uint8_t speed); + uint8_t speed); CreatePokemon WithNature(const Arbutils::CaseInsensitiveConstString& nature);