diff options
Diffstat (limited to 'src/creature.cc')
-rw-r--r-- | src/creature.cc | 101 |
1 files changed, 6 insertions, 95 deletions
diff --git a/src/creature.cc b/src/creature.cc index 24a8087..3587ab0 100644 --- a/src/creature.cc +++ b/src/creature.cc @@ -12,24 +12,9 @@ typedef nlohmann::json json; using namespace std; namespace creature { - vector<dmgType> initDmgType(const json& dat) { - vector<dmgType> stuff; - for(json x : dat) { - stuff.push_back(dmgType(x)); - } - return stuff; - } - - Creature::Creature(json data) - : creatureName(data["name"]), size(data["size"]), type(data["type"]), alignment(data["alignment"]), hdCount(data["hit_die_count"]), hdSides(data["hit_die_sides"]), speed(data["speed"]), stats(data["stats"]), skills(data["skills"]), saves(data["saves"]), langs(data["langs"]), cr(data["cr"]), proficiency(data["prof"]), dmgImmunities(initDmgType(data["d_immunities"])), dmgResistances(initDmgType(data["d_resistances"])), dmgVulnerabilities(initDmgType(data["d_vulnerabilities"])), condImmunities(initDmgType(data["c_immunities"])) + Creature::Creature(const json& data) + : inventory(json2ptrvec<item::Item>(data["inventory"])), creatureName(data["name"]), size(data["size"]), type(data["type"]), alignment(data["alignment"]), hdCount(data["hit_die_count"]), hdSides(data["hit_die_sides"]), speed(data["speed"]), stats(data["stats"]), skills(data["skills"]), saves(data["saves"]), langs(data["langs"]), cr(data["cr"]), proficiency(data["prof"]), dmgImmunities(json2vec<dmgType>(data["d_immunities"])), dmgResistances(json2vec<dmgType>(data["d_resistances"])), dmgVulnerabilities(json2vec<dmgType>(data["d_vulnerabilities"])), condImmunities(json2vec<dmgType>(data["c_immunities"])), features(json2ptrvec<feature::Feature>(data["features"])) { - // Initialize features + inventory - for(json data : data["features"]) { - features.push_back(feature::Feature::create(data)); - } - for(json data : data["inventory"]) { - inventory.push_back(item::Item::create(data)); - } // Initialize names and hp if(((map<string, json>) data).contains("givenName")) { givenName = data["givenName"]; @@ -53,14 +38,6 @@ namespace creature { return ret; } - template<typename T> vector<json> getJsonVectR(vector<T> src) { - vector<json> ret; - for(T i : src) { - ret.push_back(i.toJson()); - } - return ret; - } - nlohmann::json Creature::toJson() const { return nlohmann::json({ {"name", creatureName}, @@ -76,10 +53,10 @@ namespace creature { {"langs", langs}, {"cr", cr}, {"prof", proficiency}, - {"d_immunities", getJsonVectR(dmgImmunities)}, - {"d_resistances", getJsonVectR(dmgResistances)}, - {"d_vulnerabilities", getJsonVectR(dmgVulnerabilities)}, - {"c_immunities", getJsonVectR(condImmunities)}, + {"d_immunities", dmgImmunities}, + {"d_resistances", dmgResistances}, + {"d_vulnerabilities", dmgVulnerabilities}, + {"c_immunities", condImmunities}, {"givenName", givenName}, {"hpMax", hpMax}, {"hp", hp}, @@ -88,48 +65,6 @@ namespace creature { }); } - Creature::~Creature() {} - - string Creature::getCreatureName() const { - return creatureName; - } - - string Creature::getGivenName() const { - return givenName; - } - - void Creature::setGivenName(string name) { - givenName = name; - } - - string Creature::getType() const { - return type; - } - - string Creature::getSize() const { - return size; - } - - string Creature::getAlignment() const { - return alignment; - } - - double Creature::getCR() const { - return cr; - } - - string Creature::getLanguages() const { - return langs; - } - - int Creature::getHP() const { - return hp; - } - - int Creature::getHPMax() const { - return hpMax; - } - // True if type without matching qualifiers is in subdata bool conditionApplies(const string& type, const vector<string>& qualifiers, const vector<dmgType> subdata) { bool applies = false; @@ -158,10 +93,6 @@ namespace creature { } } - vector<string> Creature::getSenses() const { - return senses; - } - int Creature::getSkillBonus(const string& skill) const { int bonus = this->getBonus(skill2ability[skill]); if(skills.contains(skill)) { @@ -170,14 +101,6 @@ namespace creature { return bonus; } - int Creature::getScore(const string& ability) const { - return stats.at(ability); - } - - string Creature::getSpeed() const { - return speed; - } - int Creature::getAbilitySaveBonus(const string& ability) const { int bonus = this->getBonus(ability); if(find(saves.begin(), saves.end(), ability) != saves.end()) { @@ -186,18 +109,6 @@ namespace creature { return bonus; } - int Creature::getProficiency() const { - return proficiency; - } - - vector<shared_ptr<feature::Feature>> Creature::getFeatures() const { - return features; - } - - vector<shared_ptr<item::Item>> Creature::getInventory() const { - return inventory; - } - void Creature::addInventoryItem(shared_ptr<item::Item> item) { inventory.push_back(item); } |