void Creature::load(const JsonBox::Value& v, EntityManager* mgr) { JsonBox::Object o = v.getObject(); this->name = o["name"].getString(); this->hp = o["hp"].getInteger(); if(o.find("hp_max") != o.end()) { this->maxHp = o["hp_max"].getInteger(); } else { this->maxHp = hp; } this->strength = o["strength"].getInteger(); this->agility = o["agility"].getInteger(); this->evasion = o["evasion"].getDouble(); this->xp = o["xp"].getInteger(); if(o.find("inventory") != o.end()) { this->inventory = Inventory(o["inventory"], mgr); } if(o.find("equipped_weapon") != o.end()) { std::string equippedWeaponName = o["equipped_weapon"].getString(); this->equippedWeapon = equippedWeaponName == "nullptr" ? nullptr : mgr->getEntity<Weapon>(equippedWeaponName); } if(o.find("equipped_armor") != o.end()) { std::string equippedArmorName = o["equipped_armor"].getString(); this->equippedArmor = equippedArmorName == "nullptr" ? nullptr : mgr->getEntity<Armor>(equippedArmorName); } return; }