Ejemplo n.º 1
0
        /// <summary>
        /// Метод десерилизации
        /// Создает новую карту в Статическом Классе Игры и загружает ее из xml файла по указанному пути.
        /// </summary>
        /// <param name="path">Путь</param>
        public static GameMap Deserialize(string path, GameMap map)
        {
            if (File.Exists(path))
            {
                var xdocument = XDocument.Load(path);
                map = new GameMap();

                if (xdocument.Root != null)
                {
                    foreach (var node in xdocument.Root.Attributes())
                    {
                        if(node.Name.ToString().Equals("Width"))
                            map.Width = (int)xdocument.Root.Attribute("Width");
                        else if (node.Name.ToString().Equals("Height"))
                            map.Height = (int)xdocument.Root.Attribute("Height");
                    }

                    foreach (var node in xdocument.Root.Elements())
                        map.Lands.Add((Landscape)node.Deserialize());
                }
                return map;
            }
            else
            {
                throw new Exception("File to deserialize doesn't exists");
            }
        }
Ejemplo n.º 2
0
 public MapPresenter()
 {
     figures = new List<FigurePresenter>();
     map = null;
 }
Ejemplo n.º 3
0
 public MapPresenter(GameMap map)
 {
     this.map = map;
     //Background = map.Background;
     figures = new List<FigurePresenter>();
 }
Ejemplo n.º 4
0
 /// <summary>
 /// reload all lands, units and items from the game map, used when game map itself was reloaded
 /// </summary>
 /// <param name="newMap"></param>
 internal void Update(GameMap newMap)
 {
     map = newMap;
     Width = map.Width;
     Height = map.Height;
     Background = map.Background;
     Landscape = map.Lands.Select(x => new LandscapePresenter(x)).ToList();
     UpdateVisibility();
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Обновление карты в случае загрузки новой карты
        /// </summary>
        /// <param name="newMap"></param>
        public void UpdateMap(GameMap newMap)
        {
            Map.Update(newMap);

            // This is to redraw the map at once.
            // Crap, I don't know how to do it nicely
            var m = Map;
            Map = null;
            Map = m;
        }
Ejemplo n.º 6
0
 public static void NewGame(GameMap map)
 {
     try
     {
         GameEngine.Game.StartNewGame(map);
         gamePresenter = new GamePresenter(startTime: new DateTime(1939, 5, 1), side: 0);
         gamePresenter.UpdateMap(map);
         RaiseGameReloaded();
     }
     catch (Exception e)
     {
         throw e; // todo remove this
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Метод серилизации
        /// Сохраняет игру в формате xml по указанному пути.
        /// </summary>
        /// <param name="map">Карта</param>
        /// <param name="path">Путь</param>
        public static void Serialize(GameMap map, string path, string name)
        {
            var mapPath = path + "\\Maps\\" + name + " map.xaml";
            var xdocument = new XDocument(map.Serialize());
            xdocument.Save(mapPath);

            path += "\\" + name + ".xml";

            var xMap = new XElement("Map");
            xMap.SetAttributeValue("Path", mapPath);

            //сохранение фонового изображения
            var xBackground = new XElement("Background");
            if (map.Background != null && map.Background !="")
            {
                FileStream bgOrigin = new FileStream(map.Background, FileMode.Open, FileAccess.Read);//источник фона карты

                var directs = map.Background.Split('.');
                string bgMapAddress = "bg" + name + "." + directs[directs.Length - 1];
                FileStream bgMap = new FileStream(bgMapAddress, FileMode.Create);//куда скопировать фоновое изображение
                bgOrigin.CopyTo(bgMap);
                xBackground.SetAttributeValue("Path", bgMapAddress);
            }

            // сохраняем юнитов
            var xDoc = new XDocument(Serialize(map.Units));
            // сохраняем итемы
            XElement xItems = Serialize(map.Items);

            xDoc.Root.Add(xMap);
            xDoc.Root.Add(xBackground);
            xDoc.Root.Add(xItems);
            xDoc.Save(path);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Метод загрузки игры
        /// Загружает карту игры и состояние юнитов
        /// </summary>
        /// <param name="path">Путь к файлу загрузки</param>
        public static GameMap LoadGame(string path, GameMap map)
        {
            if (File.Exists(path))
            {
                var xdocument = XDocument.Load(path);
                var units = new List<Unit>();
                if (xdocument.Root != null)
                {
                    units = DeserializeUnits(path);
                    var xElement = xdocument.Root.Element("Map");
                    if (xElement != null)
                        map = Deserialize("..\\..\\"+(string)xElement.Attribute("Path"), map);
                    // map.Name = (string)xElement.Attribute("Path");

                    //нахождение фона карты
                    var xBackground = xdocument.Root.Element("Background");
                    if (xBackground != null)
                        map.Background = DeserializeBGImage((string)xBackground.Attribute("Path"));
                }

                map.Units.Clear();
                map.Units.AddRange(units);
                Game.gameLoaded = true; // what?
                return map;
            }
            else
            {
                throw new Exception("File to deserialize doesn't exists");
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Конструктор игры по умолчанию
 /// </summary>
 static Game()
 {
     mainMap = new GameMap();
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Конструктор игры по умолчанию
 /// </summary>
 static Game()
 {
     mainMap = new GameMap();
 }
Ejemplo n.º 11
0
        public static void StartNewGame(GameMap map)
        {
            try
            {
                Game.mainMap = map; // Вызываем инициализацию карты
            }
            catch (Exception)
            {

                throw new Exception("Starting New Game Failed.");
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="path"></param>
        public static void StartNewGame(string path)
        {
            try
            {
                Game.mainMap = Serializer.LoadGame(path, null); // Вызываем инициализацию карты
            }
            catch (Exception)
            {

                throw new Exception("Starting New Game Failed.");
            }
        }