#ifndef CREATURELIB_CREATECREATURE_HPP #define CREATURELIB_CREATECREATURE_HPP #include #include "../../Library/DataLibrary.hpp" #include "../Library/BattleLibrary.hpp" #include "Creature.hpp" using namespace Arbutils::Collections; namespace CreatureLib::Battling { class CreateCreature { const BattleLibrary* _library; Arbutils::CaseInsensitiveConstString _species; Arbutils::CaseInsensitiveConstString _variant = "default"_cnc; uint8_t _level; std::string _nickname = ""; Arbutils::CaseInsensitiveConstString _talent = ""_cnc; Library::Gender _gender = static_cast(-1); uint8_t _coloring = 0; Arbutils::CaseInsensitiveConstString _heldItem = ""_cnc; uint32_t _identifier = 0; List> _attacks; public: CreateCreature(const BattleLibrary* library, const Arbutils::CaseInsensitiveConstString& species, uint8_t level) : _library(library), _species(species), _level(level), _attacks(library->GetSettings()->GetMaximalMoves()) { } CreateCreature WithVariant(const Arbutils::CaseInsensitiveConstString& variant); CreateCreature WithNickname(std::string nickname); CreateCreature WithGender(Library::Gender gender); CreateCreature WithAttack(const Arbutils::CaseInsensitiveConstString& attackName, AttackLearnMethod learnMethod); Creature* Create(); }; } #endif // CREATURELIB_CREATECREATURE_HPP