Esempio n. 1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public ViewModel(Dispatcher uiDispatcher, string baseContentDir, Isometry iso)
        {
            //  Reference to the UIDispatcher for thread-safe collection manipulation
            _uiDispatcher = uiDispatcher;

            Factions = new ObservableCollection<FactionList> { new FactionList("AI"), new FactionList("Player 1"), new FactionList("Player 2") };
            
            //  Map setup
            Map = new MapDefinition(new ZTile(baseContentDir + "tiles\\Generic Tiles\\Generic Floors\\DirtSand\\Waste_Floor_Gravel_SandDirtCentre_F_1_NE.til"), iso, baseContentDir);
            MapCanvas = new MapCanvas(Map, uiDispatcher, baseContentDir + "tiles\\", iso, Factions);
            _useAltEditLayer = false;


            //  Create the available TileSets and collection views
            TileSets = new Dictionary<string, ObservableCollection<ZTile>>();
            TileSetViews = new Dictionary<string, ListCollectionView>();
            foreach (var di in new DirectoryInfo(baseContentDir + "tiles\\").GetDirectories())
            {
                TileSets.Add(di.Name, new ObservableCollection<ZTile>());
                TileSetViews.Add(di.Name, new ListCollectionView(TileSets[di.Name]));
            }

            //  Start a new thread to load in the tile images
            ThreadPool.QueueUserWorkItem(GetWholeTileSet, baseContentDir + "tiles\\");
        }
Esempio n. 2
0
File: Module.cs Progetto: jo215/Iso
        /// <summary>
        /// Saves a complete module file.
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="map"></param>
        /// <param name="roster"></param>
        public static void Save(string fileName, MapDefinition map, ICollection<Unit> roster)
        {
            if (fileName == null)
                return;
            using (var stream = new StreamWriter(fileName))
            {
                stream.WriteLine("<Module>");
                map.AppendMap(stream);

                stream.WriteLine("<Roster>");
                stream.WriteLine(roster.Count);
                foreach (Unit u in roster)
                    u.AppendUnit(stream);
                stream.WriteLine("</Roster>");

                stream.WriteLine("</Module>");
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Returns a copy of this MapDefinition.
 /// </summary>
 /// <returns></returns>
 public MapDefinition Clone()
 {
     var cloned = new MapDefinition(DefaultFloorTile, Iso, _baseContentDir) {Cells = new MapCell[Width,Height]};
     for (var x = 0; x < Cells.GetLength(0); x++)
         for (var y = 0; y < Cells.GetLength(1); y++)
             cloned.Cells[x, y] = Cells[x, y].Clone();
     foreach (var p in UndoInfo)
     {
         cloned.UndoInfo.Add(p);
     }
     return cloned;
 }
Esempio n. 4
0
        /// <summary>
        /// Reads a map from the given stream.
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="iso"></param>
        /// <returns></returns>
        public static MapDefinition ReadMap(TextReader stream, Isometry iso)
        {
            var newMap = new MapDefinition(null, iso, _baseContentDir);
            
            if (stream == null)
                return newMap;
            
            stream.ReadLine(); // <Map>
            newMap.Iso.Style = (IsometricStyle)Enum.Parse(typeof(IsometricStyle), stream.ReadLine());
            newMap.ClearAllCells(int.Parse(stream.ReadLine()), int.Parse(stream.ReadLine()));
            newMap.TileWidth = int.Parse(stream.ReadLine());
            newMap.TileHeight = int.Parse(stream.ReadLine());
            stream.ReadLine(); // </Map>

            stream.ReadLine(); // <TileDictionary>
            var requiredTiles = new List<ZTile>();
            var line = stream.ReadLine();
            while (!line.Equals("</TileDictionary>"))
            {
                requiredTiles.Add(new ZTile("D:\\workspace\\BaseGame\\" + line));

                line = stream.ReadLine();
            }
            Console.WriteLine(requiredTiles[0].Bitmaps.Count());

            stream.ReadLine(); // <Cells>
            for (var x = 0; x < newMap.Cells.GetLength(0); x++)
                for (var y = 0; y < newMap.Cells.GetLength(1); y++)
                {
                    newMap.Cells[x, y] = MapCell.FromStream(stream, requiredTiles, newMap, new Point(x,y));
                }
            stream.ReadLine(); // </Cells>

            //  Remake Parent links
            for (var x = 0; x < newMap.Cells.GetLength(0); x++)
                for (var y = 0; y < newMap.Cells.GetLength(1); y++)
                {
                    if (newMap.Cells[x, y].TempPoint.X != -1)
                    {
                        newMap.Cells[x, y].ParentCell = newMap.Cells[newMap.Cells[x, y].TempPoint.X, newMap.Cells[x, y].TempPoint.Y];
                    }
                }
            return newMap;
        }