예제 #1
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());
            }
        }
예제 #2
0
 public bool IsWinner()
 {
     return(IsQuestCompleted(World.QuestById(World.QUEST_KILL_THIEF_KING)));
 }