From 2ab51e507d620c4479e07ca0ec47d22c8c66bc90 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 13 Apr 2021 15:14:34 -0400 Subject: Initial commit --- src/item.cc | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/item.cc (limited to 'src/item.cc') diff --git a/src/item.cc b/src/item.cc new file mode 100644 index 0000000..0aad620 --- /dev/null +++ b/src/item.cc @@ -0,0 +1,48 @@ +#include "json.hpp" +#include "item.h" +#include "weapon.h" +#include "armor.h" +#include "utils.h" +#include +#include + +using namespace std; +typedef nlohmann::json json; + +namespace item { + shared_ptr Item::create(const json& data) { + auto dataMap = (map) data; + if(dataMap.contains("damage")) { + return shared_ptr(new Weapon(data)); + } else if(dataMap.contains("ac")) { + return shared_ptr(new Armor(data)); + } + return shared_ptr(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} + }); + } +} -- cgit v1.2.3