#ifndef CREATURELIB_CREATECREATURE_HPP #define CREATURELIB_CREATECREATURE_HPP #include #include "../../Library/DataLibrary.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) {} 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