aboutsummaryrefslogtreecommitdiff
path: root/src/item.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/item.cc')
-rw-r--r--src/item.cc36
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}
- });
- }
}