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