#pragma once #include "json.hpp" #include "jsonable.h" namespace spell { class Spell : public Jsonable { public: Spell(const nlohmann::json& data) : name(data["name"]), level(data["level"]), school(data["school"]), classes(data["classes"]), castingTime(data["casting_time"]), range(data["range"]), components(data["components"]), duration(data["duration"]), text(data["text"]) {}; virtual ~Spell() {}; std::string getName(void) const {return name;} int getLevel(void) const {return level;} std::string getSchool(void) const {return school;} std::vector getClasses(void) const {return classes;} std::string getCastingTime(void) const {return castingTime;} std::string getRange(void) const {return range;} std::string getComponents(void) const {return components;} std::string getDuration(void) const {return duration;} std::string getText(void) const {return text;} virtual nlohmann::json toJson(void) const { /*return nlohmann::json({ {"name", name}, {"level", level}, {"school", school}, {"classes", classes}, {"casting_time", castingTime}, {"range", range}, {"components", components}, {"duration", duration}, {"text", text} });*/ return nlohmann::json(name); } private: const std::string name; const int level; const std::string school; const std::vector classes; const std::string castingTime; const std::string range; const std::string components; const std::string duration; const std::string text; }; }