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());
            }
        }
Beispiel #2
0
        // 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();
            }
        }
Beispiel #3
0
        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());
            }
        }
Beispiel #4
0
        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());
            }
        }
Beispiel #5
0
        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());
            }
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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());
            }
        }
Beispiel #9
0
        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());
            }
        }