Beispiel #1
0
        public bool HasQuestPrerequisites(int questID)
        {
            Quest quest = World.GetQuest(questID);

            foreach (int req in quest.QuestRequirements)
            {
                if (!IsQuestComplete(req))
                {
                    return(false);
                }
            }
            return(GetLevel() >= quest.LevelRequirement);
        }
Beispiel #2
0
        public void UpdateQuest(int questID, int state)
        {
            PlayerQuest playerQuest = Quests.SingleOrDefault(
                pq => pq.ID == questID);

            if (playerQuest == null)
            {
                Quests.Add(new PlayerQuest(World.GetQuest(questID), state, false));
            }
            else
            {
                playerQuest.State = state;
            }
        }
Beispiel #3
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());
            }
        }