Exemplo n.º 1
0
        /// <summary>
        /// Wczytuje opis mapy z pliku
        /// </summary>
        /// <param name="fileName">nazwa plku z map¹</param>
        public static MapData FromFile(string fileName)
        {
            XmlTextReader reader = new XmlTextReader(fileName);
            reader.WhitespaceHandling = WhitespaceHandling.None;
            //string result;
            MapData data = new MapData();
            data.gameObjects = new List<IGameObject>();
            try
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Map")
                    {
                        data.name = reader.GetAttribute("name");
                        if (data.Name == null)
                            throw new FileFormatException("Nie ma nazwy mapy w pliku " + fileName);

                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Map"))
                        {
                            reader.Read();
                            if (reader.Name == "Object")
                            {
                                ObjectType type;
                                IGameObject obj;
                                obj = XmlNodeReader.GetObjectNode(reader, out type);
                                data.GameObjects.Add(obj);
                            }
                            else if (reader.Name == "RespawnPointList")
                            {

                                RespawnPoint resp;
                                ObjectType type;
                                while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "RespawnPointList"))
                                {
                                    reader.Read();
                                    if (reader.Name == "Assassins")
                                    {
                                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Assassins"))
                                        {
                                            reader.Read();
                                            resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type);
                                            resp.Team = GameTeam.Assassins;
                                            data.GameObjects.Add(resp);

                                        }
                                    }
                                    else if (reader.Name == "Knights")
                                    {
                                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Assassins"))
                                        {
                                            reader.Read();
                                            resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type);
                                            resp.Team = GameTeam.Knights;
                                            data.GameObjects.Add(resp);

                                        }
                                    }

                                }
                            }
                            else if (reader.Name == "WeaponPickupList")
                            {

                                Weapons.WeaponPickup wp;
                                ObjectType type;
                                while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "WeaponPickupList"))
                                {
                                    reader.Read();

                                    wp = (Weapons.WeaponPickup)XmlNodeReader.GetObjectNode(reader, out type);
                                    data.GameObjects.Add(wp);

                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                return null;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }
            return data;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Wczytuje opis mapy z pliku
        /// </summary>
        /// <param name="fileName">nazwa plku z map¹</param>
        /// <param name="reporter">Klasa do powiadamiania o postêpie</param>
        public static void FromFileBkg(string fileName,ProgressReporter reporter)
        {
            XmlTextReader reader = new XmlTextReader(fileName);
            reader.WhitespaceHandling = WhitespaceHandling.None;
            //string result;
            MapData data = new MapData();
            data.gameObjects = new List<IGameObject>();

            reporter.Info = "Otwarto plik";
            try
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Map")
                    {
                        data.name = reader.GetAttribute("name");
                        if (data.Name == null)
                            throw new FileFormatException("Nie ma nazwy mapy w pliku " + fileName);

                        reporter.Info = "Wczytuje mapê: " + data.name;
                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Map"))
                        {
                            reader.Read();
                            if (reader.Name == "Object")
                            {
                                ObjectType type;
                                IGameObject obj;
                                obj = XmlNodeReader.GetObjectNode(reader, out type);
                                data.GameObjects.Add(obj);
                                reporter.Info = "Wczytano obiekt: " + obj.Name;
                            }
                            else if (reader.Name == "RespawnPointList")
                            {

                                RespawnPoint resp;
                                ObjectType type;
                                while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "RespawnPointList"))
                                {
                                    reader.Read();
                                    if (reader.Name == "Assassins")
                                    {
                                        reader.Read();
                                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Assassins"))
                                        {

                                            resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type);
                                            resp.Team = GameTeam.Assassins;
                                            data.GameObjects.Add(resp);
                                            reporter.Info = "Wczytano obiekt: " + resp.Name;
                                            reader.Read();

                                        }
                                    }
                                    else if (reader.Name == "Knights")
                                    {
                                        reader.Read();
                                        while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "Knights"))
                                        {
                                            resp = (RespawnPoint)XmlNodeReader.GetObjectNode(reader, out type);
                                            resp.Team = GameTeam.Knights;
                                            data.GameObjects.Add(resp);
                                            reporter.Info = "Wczytano obiekt: " + resp.Name;
                                            reader.Read();

                                        }
                                    }

                                }
                            }
                            else if (reader.Name == "WeaponPickupList")
                            {

                                Weapons.WeaponPickup wp;
                                ObjectType type;
                                reader.Read();
                                while (!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "WeaponPickupList"))
                                {

                                    wp = (Weapons.WeaponPickup)XmlNodeReader.GetObjectNode(reader, out type);
                                    data.GameObjects.Add(wp);
                                    reporter.Info = "Wczytano obiekt: " + wp.Name;
                                    reader.Read();

                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                return;
            }
            finally
            {
                if (reader != null)
                    reader.Close();
            }
            reporter.Data = data;
            //reporter.Complete = true;
        }