ActorInventory::ActorInventory(const XMLNode &node) :Inventory(node), m_weapon(Item::dummyWeapon()), m_dummy_weapon(Item::dummyWeapon()), m_armour(Item::dummyArmour()), m_ammo{Item::dummyAmmo(), 0} { if(!node) return; XMLNode weapon_node = node.child("weapon"); XMLNode armour_node = node.child("armour"); XMLNode ammo_node = node.child("ammo"); if(weapon_node) m_weapon = Item(findProto(weapon_node.attrib("proto_id"), ProtoId::item_weapon)); if(armour_node) m_armour = Item(findProto(armour_node.attrib("proto_id"), ProtoId::item_armour)); if(ammo_node) { Item ammo(findProto(ammo_node.attrib("proto_id"), ProtoId::item_ammo)); int count = ammo_node.attrib<int>("count"); int id = add(ammo, count); equip(id, count); } }
const Item Item::dummyWeapon() { return Item(findProto("_dummy_weapon", ProtoId::item_weapon)); }
const Item Item::dummyAmmo() { return Item(findProto("_dummy_ammo", ProtoId::item_ammo)); }
const Item Item::dummyArmour() { return Item(findProto("_dummy_armour", ProtoId::item_armour)); }
const Item Item::dummy() { return Item(findProto("_dummy_item", ProtoId::item)); }