diff --git a/src/BuildData/BuildMoves.cpp b/src/BuildData/BuildMoves.cpp index cb1bdfb..7b3ed89 100644 --- a/src/BuildData/BuildMoves.cpp +++ b/src/BuildData/BuildMoves.cpp @@ -12,6 +12,17 @@ using json = nlohmann::json; return nullptr; \ } +static PkmnLib::Library::MoveCategory ParseCategory(const std::string& input) { + if (input == "physical") + return PkmnLib::Library::MoveCategory::Physical; + else if (input == "special") + return PkmnLib::Library::MoveCategory::Special; + else if (input == "status") + return PkmnLib::Library::MoveCategory::Status; + std::cout << "Invalid move category '" << input << ".\n"; + return static_cast(255); +} + PkmnLib::Library::MoveLibrary* BuildMoves::Build(const std::string& path, const CreatureLib::Library::TypeLibrary* types) { std::ifstream fileStream(path.c_str()); @@ -33,15 +44,18 @@ PkmnLib::Library::MoveLibrary* BuildMoves::Build(const std::string& path, GET(val, target, i); GET(val, category, i); GET(val, flags, i); - if (_pp.get() == 0) + if (_pp.get() == 0) continue; auto type = types->GetTypeId(_type.get()); - auto move = new PkmnLib::Library::MoveData( - _name.get(), type, PkmnLib::Library::MoveCategory ::Physical, _power.get(), - _accuracy.get(), _pp.get(), CreatureLib::Library::AttackTarget::Any, - _priority.get(), _flags.get>()); + auto category = ParseCategory(_category.get()); + if (static_cast(category) == 255) + return nullptr; + auto move = new PkmnLib::Library::MoveData(_name.get(), type, category, _power.get(), + _accuracy.get(), _pp.get(), + CreatureLib::Library::AttackTarget::Any, _priority.get(), + _flags.get>()); - lib->LoadAttack(move->GetName(),move); + lib->LoadAttack(move->GetName(), move); } return lib;