diff options
Diffstat (limited to 'src/item.cc')
-rw-r--r-- | src/item.cc | 36 |
1 files changed, 5 insertions, 31 deletions
diff --git a/src/item.cc b/src/item.cc index 0aad620..f602be2 100644 --- a/src/item.cc +++ b/src/item.cc @@ -10,39 +10,13 @@ using namespace std; typedef nlohmann::json json; namespace item { + shared_ptr<Item> Item::create(const json& data) { - auto dataMap = (map<string, json>) data; - if(dataMap.contains("damage")) { - return shared_ptr<Item>(new Weapon(data)); - } else if(dataMap.contains("ac")) { - return shared_ptr<Item>(new Armor(data)); + if(data["type"] == "weapon") { + return utils::loadDFromJson<Item, Weapon>(data); + } else if(data["type"] == "armor") { + return utils::loadDFromJson<Item, Armor>(data); } return shared_ptr<Item>(new Item(data)); } - - Item::Item(const json& data) : name(data["name"]), cost(data["cost"]), weight(data["weight"]) {}; - - //Item::Item(const std::string& name, int cost, double weight) : name(name), cost(cost), weight(weight) {}; - - Item::~Item() {} - - string Item::getName() const { - return name; - } - - int Item::getCost() const { - return cost; - } - - double Item::getWeight() const { - return weight; - } - - json Item::toJson() const { - return json({ - {"name", name}, - {"cost", cost}, - {"weight", weight} - }); - } } |