public void AddItemToInventory(int itemID, int quantity = 1) { InventoryItem invItem = Inventory.SingleOrDefault(ii => ii.ID == itemID); if (invItem == null) { invItem = new InventoryItem(World.GetItem(itemID), quantity); Inventory.Add(invItem); } else { invItem.Quantity += quantity; } RaiseInventoryChangedEvent(invItem.Data); }
public static Player CreatePlayerFromXmlString(string xmlSaveData) { try { XmlDocument saveData = new XmlDocument(); saveData.LoadXml(xmlSaveData); int currentHitPoints = Convert.ToInt32(saveData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); int maximumHitPoints = Convert.ToInt32(saveData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); int gold = Convert.ToInt32(saveData.SelectSingleNode("/Player/Stats/Gold").InnerText); Player player = new Player(currentHitPoints, maximumHitPoints, gold); player.HomeTileID = Convert.ToInt32(saveData.SelectSingleNode("/Player/Stats/HomeTile").InnerText); int currentTileID = Convert.ToInt32(saveData.SelectSingleNode("/Player/Stats/CurrentTile").InnerText); player.CurrentTile = World.GetTile(currentTileID); foreach (XmlNode node in saveData.SelectNodes("/Player/PlayerSkills/PlayerSkill")) { int type = Convert.ToInt32(node.Attributes["Type"].Value); int level = Convert.ToInt32(node.Attributes["Level"].Value); int experience = Convert.ToInt32(node.Attributes["Experience"].Value); player.UpdateSkill(type, level, experience); } foreach (XmlNode node in saveData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); if (quantity > 0) { player.AddItemToInventory(id, quantity); } } foreach (XmlNode node in saveData.SelectNodes("/Player/PlayerQuests/PlayerQuest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int state = Convert.ToInt32(node.Attributes["State"].Value); bool isComplete = Convert.ToBoolean(node.Attributes["IsComplete"].Value); player.Quests.Add(new PlayerQuest(World.GetQuest(id), state, isComplete)); } foreach (XmlNode node in saveData.SelectNodes("/Player/ItemEquipments/ItemEquipment")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); player.Equipment.Add((ItemEquipment)World.GetItem(id)); } return(player); } catch { // If there was an error with the XML data, return a default player object return(Player.CreateDefaultPlayer()); } }