public static Player CreatePlayerFromXmlString(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(xmlPlayerData); int currentHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); int maximumHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); int level = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Level").InnerText); int currentStrength = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentStrength").InnerText); int currentDexterity = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentDexterity").InnerText); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int experiencePoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/ExperiencePoints").InnerText); int experienceRequiredToLevel = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/ExperienceRequiredToLevel").InnerText); Player player = new Player(currentHitPoints, maximumHitPoints, level, currentStrength, currentDexterity, gold, experiencePoints, experienceRequiredToLevel); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationByID(currentLocationID); if (playerData.SelectSingleNode("/Player/Stats/CurrentWeapon") != null) { int currentWeaponID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentWeapon").InnerText); player.CurrentWeapon = (Weapon)World.ItemByID(currentWeaponID); } foreach (XmlNode node in playerData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } foreach (XmlNode node in playerData.SelectNodes("/Player/PlayerQuests/PlayerQuest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); bool isCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestByID(id)); playerQuest.IsCompleted = isCompleted; player.Quests.Add(playerQuest); } return(player); } catch { // If there was an error with the XML data, return a default player object return(Player.CreateDefaultPlayer()); } }
// attempt to attack the current monster public void Attack() { if (CurrentMonster == null) { return; } int damage = RandomGenerator.Next(Player.MinDamage, Player.MaxDamage); damage -= CurrentMonster.Defence; if (damage < 0) { damage = 0; } _monsterHitPoints -= damage; RaiseMessage("You hit the " + CurrentMonster.Name + " for " + damage + " points."); if (_monsterHitPoints <= 0) { // Monster is dead RaiseMessage(""); RaiseMessage("You defeated the " + CurrentMonster.Name); // Give player experience points for killing the monster Player.AddCombatExperience(CurrentMonster.RewardXP); RaiseMessage("You receive " + CurrentMonster.RewardXP + " experience points"); // Give player gold for killing the monster var gold = RandomGenerator.Next(CurrentMonster.MinGold, CurrentMonster.MaxGold); if (gold > 0) { Player.Gold += gold; RaiseMessage("You receive " + gold + " gold"); } // Get random loot from the monster foreach (var lootItem in CurrentMonster.LootTable) { if (RandomGenerator.NextDouble() <= lootItem.DropChance) { int quantity = RandomGenerator.Next(lootItem.MinQuantity, lootItem.MaxQuantity); Player.AddItemToInventory(lootItem.Data, quantity); RaiseMessage("You loot " + quantity + " " + lootItem.Data.Name); } } CurrentMonster.OnKill?.Invoke(this, Player); CurrentMonster = null; RaiseMessage(""); } else { // Monster is still alive DoMonsterMove(); } }
public static Player CreatePlayerFromXmlString(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(xmlPlayerData); int currentHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); int maximumHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int experiencePoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/ExperiencePoints").InnerText); Player player = new Player(currentHitPoints, maximumHitPoints, gold, experiencePoints); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationByID(currentLocationID); if (playerData.SelectSingleNode("/Player/Stats/CurrentWeapon") != null) { int currentWeaponID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentWeapon").InnerText); player.CurrentWeapon = (Weapon)World.ItemByID(currentWeaponID); } if (playerData.SelectSingleNode("/Player/Stats/CurrentArmor") != null) { int currentArmorID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentArmor").InnerText); player.CurrentArmor = (Armor)World.ItemByID(currentArmorID); } foreach (XmlNode node in playerData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } foreach (XmlNode node in playerData.SelectNodes("/Player/PlayerQuests/PlayerQuest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); bool isCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestByID(id)); playerQuest.IsCompleted = isCompleted; player.Quests.Add(playerQuest); } player.MoveTo(World.LocationByID(player.CurrentLocation.ID)); return(player); } catch { return(Player.CreateDefaultPlayer()); } }
public static Player CreatePlayerFromXML(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(xmlPlayerData); int currentHP = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHP").InnerText); int maxHP = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaxHP").InnerText); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int EXP = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/EXP").InnerText); Player player = new Player(currentHP, maxHP, gold, EXP); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationById(currentLocationID); if (playerData.SelectSingleNode("/Player/Stats/CurrentWeapon") != null) { int currentWeaponID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentWeapon").InnerText); player.CurrentWeapon = (Weapon)World.ItemByID(currentWeaponID); } foreach (XmlNode node in playerData.SelectNodes("/Player/Inventory/Item")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } foreach (XmlNode node in playerData.SelectNodes("/Player/PlayerQuests/Quest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); bool isCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestById(id)); playerQuest.IsCompleted = isCompleted; player.Quests.Add(playerQuest); } return(player); } catch { //if error with XML data, return default player return(Player.CreateDefaultPlayer()); } }
public static Player CreatePlayerFromXmlString(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(xmlPlayerData); int currentHP = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHP").InnerText); int maximumHP = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaximumHP").InnerText); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int xp = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/XP").InnerText); Player player = new Player(currentHP, maximumHP, gold, xp); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationByID(currentLocationID); foreach (XmlNode node in playerData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } foreach (XmlNode node in playerData.SelectNodes("/Player/PlayerQuests/PlayerQuest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); bool isCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestByID(id)); playerQuest.IsCompleted = isCompleted; player.Quests.Add(playerQuest); } return(player); } catch (Exception) { //If there was an error with the XML Data, return a default player object return(Player.CreateDefaultPlayer()); } }
public static Player CreatePlayerFromXmlString(string PLAYER_DATA_FILE_NAME) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(PLAYER_DATA_FILE_NAME); string playerName = playerData.SelectSingleNode("/Player/Stats/Name").InnerText; // Console.WriteLine("Got name: " + playerName); string PC = playerData.SelectSingleNode("/Player/Stats/Class").InnerText; // Console.WriteLine("Got class: " + PC); string PR = playerData.SelectSingleNode("/Player/Stats/Race").InnerText; //Console.WriteLine("Got race: " + PR); int currentHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); // Console.WriteLine("Got current hit points: " + currentHitPoints.ToString()); int maximumHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); // Console.WriteLine("Got max hit points: " + maximumHitPoints.ToString()); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); // Console.WriteLine("Got gold: " + gold.ToString()); int experiencePoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/ExperiencePoints").InnerText); //Console.WriteLine("Got experience: " + experiencePoints.ToString()); Factions factionString = (Factions)Enum.Parse(typeof(Factions), (playerData.SelectSingleNode("/Player/Stats/Faction").InnerText), true); //Console.WriteLine("Got Faction: " + factionString.ToString()); int alignment = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Alignment").InnerText); //Console.WriteLine("Got Alignment: " + alignment.ToString()); int equiptString = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentWeapon").InnerText); IWeapon equipt = World.WeaponByID(equiptString); // Console.WriteLine("Got equipt weapon: " + equipt.Name.ToString()); Player player = new Player(playerName, PC, PR, gold, currentHitPoints, maximumHitPoints, (Weapon)equipt, false, true, factionString, alignment); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); Player.CurrentLocation = World.LocationByID(currentLocationID); if (playerData.SelectSingleNode("/Player/Stats/CurrentWeapon") != null) { int currentWeaponID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentWeapon").InnerText); player.Equipt = (Weapon)World.WeaponByID(currentWeaponID); } foreach (XmlNode node in playerData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); if (id > 100 && id <= 200) { for (int i = 0; i < quantity; i++) { player.AddItemToInventory((Weapon)World.WeaponByID(id)); } } else { for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } } return(player); } catch (Exception ex) { // If there was an error with the XML data, return a default player object Console.WriteLine(ex.ToString()); //return CreateDefaultPlayer(); return(null); } }
public static Player CreatePlayerFromXmlString(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); playerData.LoadXml(xmlPlayerData); int currentHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); int maximumHitPoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); int gold = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int experiencePoints = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/ExperiencePoints").InnerText); Player player = new Player(currentHitPoints, maximumHitPoints, gold, experiencePoints); int currentLocationID = Convert.ToInt32(playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationByID(currentLocationID); foreach (XmlNode node in playerData.SelectNodes("/Player/InventoryItems/InventoryItem")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); int quantity = Convert.ToInt32(node.Attributes["Quantity"].Value); for (int i = 0; i < quantity; i++) { player.AddItemToInventory(World.ItemByID(id)); } } foreach (XmlNode node in playerData.SelectNodes("/Player/PlayerQuests/PlayerQuest")) { int id = Convert.ToInt32(node.Attributes["ID"].Value); bool isCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestByID(id)); playerQuest.IsCompleted = isCompleted; player.Quests.Add(playerQuest); } return player; } catch { // If there was an error with the XML data, return a default player object return Player.CreateDefaultPlayer(); } }
public static Player CreatePlayerFromXmlString(string xmlPlayerData) { try { XmlDocument playerData = new XmlDocument(); // playerData.PreserveWhitespace = true; playerData.LoadXml(xmlPlayerData); int currentHitPoints = Convert.ToInt32( playerData.SelectSingleNode("/Player/Stats/CurrentHitPoints").InnerText); int maximumHitPoints = Convert.ToInt32( playerData.SelectSingleNode("/Player/Stats/MaximumHitPoints").InnerText); int gold = Convert.ToInt32( playerData.SelectSingleNode("/Player/Stats/Gold").InnerText); int experiencePoints = Convert.ToInt32( playerData.SelectSingleNode("/Player/Stats/ExperiencePoints").InnerText); Player player = new Player( currentHitPoints, maximumHitPoints, gold, experiencePoints); int currentLocationID = Convert.ToInt32( playerData.SelectSingleNode("/Player/Stats/CurrentLocation").InnerText); player.CurrentLocation = World.LocationByID(currentLocationID); if (playerData.SelectSingleNode("/Player/Stats/CurrentWeaponID") != null) { int currentWeaponID = Convert.ToInt32(playerData.SelectSingleNode( "/Player/Stats/CurrentWeaponID").InnerText); player.CurrentWeapon = (Weapon)World.ItemByID(currentWeaponID); } if (playerData.SelectSingleNode("/Player/Stats/CurrentPotionID") != null) { int currentPotionID = Convert.ToInt32(playerData.SelectSingleNode( "/Player/Stats/CurrentPotionID").InnerText); player.CurrentPotion = (HealingPotion)World.ItemByID(currentPotionID); } foreach (XmlNode node in playerData.SelectNodes( "/Player/InventoryItems/InventoryItem")) { int itemID = Convert.ToInt32(node.Attributes["ID"].Value); int itemQuantity = Convert.ToInt32(node.Attributes["Quantity"].Value); // refactored from tutorial due to overloading AddItemToInventory with quantity player.AddItemToInventory(World.ItemByID(itemID), itemQuantity); } foreach (XmlNode node in playerData.SelectNodes( "/Player/PlayerQuests/PlayerQuest")) { int questID = Convert.ToInt32(node.Attributes["ID"].Value); bool questIsCompleted = Convert.ToBoolean(node.Attributes["IsCompleted"].Value); PlayerQuest playerQuest = new PlayerQuest(World.QuestByID(questID)); playerQuest.IsCompleted = questIsCompleted; player.Quests.Add(playerQuest); } return(player); } catch { // If there was an error with the XML data, return a default player object return(Player.CreateDefaultPlayer()); } }
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()); } }