Ejemplo n.º 1
0
 private static void PlaceLargeTile(MapState mapState, Tile tile, int layer, int x, int y)
 {
     for (int subX = 0; subX < tile.Width; subX++)
     {
         for (int subY = 0; subY < tile.Height; subY++)
         {
             mapState.SetTile(layer, x + subX, y + subY, tile.GetSubtile(subX, subY));
         }
     }
 }
Ejemplo n.º 2
0
        private void SelectTilesBase(MapState mapState, Random rng, int tileX, int tileY, int tileXLimit, int tileYLimit)
        {
#if DEBUG
            Console.Out.WriteLine("SelectTilesBase ({0},{1})-({2},{3})", tileX, tileY, tileXLimit, tileYLimit);
#endif
            for (int layer = 0; layer < 4; layer++)
            {
                Grid <BorderKind> terrainMap = Map.MakeTerrainSubMap(mapState, tileX, tileY, tileXLimit, tileYLimit, layer);
                for (int y = tileYLimit - 1; y >= tileY; y--)
                {
                    for (int x = tileXLimit - 1; x >= tileX; x--)
                    {
                        Tile t = GetTile(rng, x - tileX, y - tileY, terrainMap, false, mapState.GetTile(layer, x, y));
                        mapState.SetTile(layer, x, y, t);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static Map DeserializeFrom(StreamReader stream)
        {
            XmlReader xml = XmlReader.Create(stream);

            xml.ReadStartElement("Map");

            String tilesetName = xml.ReadElementString("Tileset");

            if (tilesetName != "Linedraw")
            {
                throw new NotImplementedException();
            }

            TileSet tileSet = TileSet.Load(@"Data\Simple.mdts");

            int width  = int.Parse(xml.ReadElementString("Width"));
            int height = int.Parse(xml.ReadElementString("Height"));

            Map      map   = new Map(tileSet, width, height);
            MapState state = map.state;

            xml.ReadStartElement("Terrain");
            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    int tileId = int.Parse(xml.ReadElementString("Square"));
                    state.SetSquareKind(x, y, tileSet.TerrainByIndex[tileId]);
                }
            }
            xml.ReadEndElement(); /* Terrain */

            xml.ReadStartElement("Tiles");
            while (xml.IsStartElement("Tile"))
            {
                xml.ReadStartElement("Tile");

                int layer = int.Parse(xml.ReadElementString("Layer"));
                int x     = int.Parse(xml.ReadElementString("X"));
                int y     = int.Parse(xml.ReadElementString("Y"));
                int value = int.Parse(xml.ReadElementString("Value"));

                Tile tile = tileSet.TileList[value];
                if (tile.IsLarge)
                {
                    for (int subX = 0; subX < tile.Width; subX++)
                    {
                        for (int subY = 0; subY < tile.Height; subY++)
                        {
                            state.SetTile(layer, x + subX, y + subY, tile.GetSubtile(subX, subY));
                        }
                    }
                }
                else
                {
                    state.SetTile(layer, x, y, tile);
                }

                xml.ReadEndElement(); /* Tile */
            }

            xml.ReadEndElement(); /* Tiles */

            xml.ReadEndElement(); /* Map */

            // TODO: Verify that map is correct
            map.ClearHoverTerrain();
            return(map);
        }