コード例 #1
0
        private static Tile GetOverlayTile(Track track, int tileX, int tileY)
        {
            RoadTileset tileset  = track.RoadTileset;
            Point       location = new Point(tileX, tileY);

            OverlayTiles overlay = track.OverlayTiles;

            for (int i = overlay.Count - 1; i >= 0; i--)
            {
                OverlayTile overlayTile = overlay[i];
                if (overlayTile.IntersectsWith(location))
                {
                    int  relativeX = tileX - overlayTile.X;
                    int  relativeY = tileY - overlayTile.Y;
                    byte tileId    = overlayTile.Pattern[relativeX, relativeY];

                    if (tileId != OverlayTile.None)
                    {
                        return(tileset[tileId]);
                    }
                }
            }

            return(null);
        }
コード例 #2
0
        public void LoadContent(Vector2 tileDimensions, Vector2 tileOffset, Vector2 mapDimensions)
        {
            if (Image.Path != String.Empty)
            {
                Image.LoadContent();
            }
            Vector2 position = -tileDimensions;

            position.X += mapDimensions.X;
            position.Y -= Height * tileDimensions.X / 8;
            TileOffset  = tileOffset;

            // Save the dimensions of the layer
            LayerDimensions.Y = TMap.Row.Count;
            LayerDimensions.X = TMap.Row[0].Split('[').Length - 1;

            int numTile = 0; int numRows = 0;

            foreach (string row in TMap.Row)
            {
                // Get the tiles
                string[] split = row.Split(']');
                position.X  = -tileDimensions.X - tileOffset.X * numRows + mapDimensions.X;;
                position.Y += tileDimensions.X / 2 - tileOffset.Y * numTile - tileOffset.Y; // tile dimensions.x/2 is a hack to get the sample to work

                // Loop through all of the tiles and load their content from the tile sheet based on val1 and val2
                numTile = 0;
                foreach (string s in split)
                {
                    if (s != String.Empty)
                    {
                        position += tileOffset;
                        if (!s.Contains("x"))
                        {
                            // Create a new tile and add it to the list
                            IsometricTile t   = new IsometricTile();
                            string        str = s.Replace("[", String.Empty);
                            t.Value1       = int.Parse(str.Substring(0, str.IndexOf(':')));
                            t.Value2       = int.Parse(str.Substring(str.IndexOf(':') + 1));
                            t.GridLocation = new Point(numTile, numRows);
                            t.Height       = Height;
                            t.LoadContent(position, new Rectangle(t.Value1 * (int)tileDimensions.X, t.Value2 * (int)tileDimensions.Y,
                                                                  (int)tileDimensions.X, (int)tileDimensions.Y));

                            if (OverlayTiles.Contains("[" + t.Value1.ToString() + ":" + t.Value2.ToString() + "]"))
                            {
                                _overlayTiles.Add(t);
                            }
                            else
                            {
                                _underlayTiles.Add(t);
                            }
                        }
                        numTile++;
                    }
                }
                numRows++;
            }
        }
コード例 #3
0
        private void TestGetBytes(byte[] data)
        {
            OverlayTiles overlayTiles = new OverlayTiles(data, this.overlayTileSizes, this.overlayTilePatterns);

            byte[] dataAfter = overlayTiles.GetBytes();

            Assert.AreEqual(data, dataAfter);
        }
コード例 #4
0
        public void LoadContent(Vector2 tileDimensions, Vector2 mapDimensions)
        {
            if (Image.Path != String.Empty)
            {
                Image.LoadContent();
            }
            Vector2 position = -tileDimensions;

            position.X += mapDimensions.X;

            // Save the dimensions of the layer
            LayerDimensions.Y = TMap.Row.Count;
            LayerDimensions.X = TMap.Row[0].Split('[').Length - 1;

            foreach (string row in TMap.Row)
            {
                // Get the tiles
                string[] split = row.Split(']');
                position.X  = -tileDimensions.X + mapDimensions.X;;
                position.Y += tileDimensions.Y;

                // Loop through all of the tiles and load their content from the tile sheet based on val1 and val2
                foreach (string s in split)
                {
                    if (s != String.Empty)
                    {
                        _state      = "Passive";
                        position.X += tileDimensions.X;
                        if (!s.Contains("x"))
                        {
                            // Create a new tile and add it to the list
                            OrthogonalTile t   = new OrthogonalTile();
                            string         str = s.Replace("[", String.Empty);
                            t.Value1 = int.Parse(str.Substring(0, str.IndexOf(':')));
                            t.Value2 = int.Parse(str.Substring(str.IndexOf(':') + 1));
                            if (SolidTiles.Contains("[" + t.Value1.ToString() + ":" + t.Value2.ToString() + "]"))
                            {
                                _state = "Solid";
                            }
                            t.LoadContent(_state, position, new Rectangle(t.Value1 * (int)tileDimensions.X, t.Value2 * (int)tileDimensions.Y,
                                                                          (int)tileDimensions.X, (int)tileDimensions.Y));

                            if (OverlayTiles.Contains("[" + t.Value1.ToString() + ":" + t.Value2.ToString() + "]"))
                            {
                                _overlayTiles.Add(t);
                            }
                            else
                            {
                                _underlayTiles.Add(t);
                            }
                        }
                    }
                }
            }
        }
コード例 #5
0
ファイル: Layer.cs プロジェクト: WoozChucky/Old_Avalon_XNA
        public void LoadContent(Vector2 tileDimensions)
        {
            Image.LoadContent();
            Vector2 position = -tileDimensions;

            foreach (string row in Tile.Row)
            {
                string[] split = row.Split(']');
                position.X  = -tileDimensions.X;
                position.Y += tileDimensions.Y;

                foreach (string s in split)
                {
                    if (s != String.Empty)
                    {
                        position.X += tileDimensions.X;

                        if (!s.Contains("x"))
                        {
                            state = "Passive";
                            Tile tile = new Tile();


                            string str    = s.Replace("[", "");
                            int    value1 = int.Parse(str.Substring(0, str.IndexOf(':')));
                            int    value2 = int.Parse(str.Substring(str.IndexOf(':') + 1));

                            if (SolidTiles.Contains("[" + value1.ToString() + ":" + value2.ToString() + "]"))
                            {
                                state = "Solid";
                            }

                            tile.LoadContent(position,
                                             new Rectangle(value1 * (int)tileDimensions.X, value2 * (int)tileDimensions.Y,
                                                           (int)tileDimensions.X, (int)tileDimensions.Y), state);

                            if (OverlayTiles.Contains("[" + value1.ToString() + ":" + value2.ToString() + "]"))
                            {
                                overlayTiles.Add(tile);
                            }
                            else
                            {
                                underlayTiles.Add(tile);
                            }
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: Layer.cs プロジェクト: kalaharileeu/tiledrpg
        public void LoadContent(Vector2 tileDimensions)
        {
            Image.LoadContent();
            Vector2 position = -tileDimensions;

            foreach (string row in Tile.Row)//This Tile is a tile map
            {
                string[] split = row.Split(']');
                position.X  = -tileDimensions.X;
                position.Y += tileDimensions.Y;
                foreach (string s in split)
                {
                    if (s != String.Empty)
                    {
                        position.X += tileDimensions.X;
                        if (!s.Contains("x"))
                        {
                            state = "Passive";      //Passive state and solid state. solid state not walk throuhg
                            Tile tile = new Tile(); //make a instance of a new tile

                            string str    = s.Replace("[", String.Empty);
                            int    value1 = int.Parse(str.Substring(0, str.IndexOf(':')));
                            int    value2 = int.Parse(str.Substring(str.IndexOf(':') + 1));

                            if (SolidTiles.Contains("[" + value1.ToString() + ":" + value2.ToString() + "]"))
                            {
                                state = "Solid";
                            }

                            //send coordiantes to crop out the tile
                            tile.LoadContent(position, new Rectangle(
                                                 value1 * (int)tileDimensions.X, value2 * (int)tileDimensions.Y,
                                                 (int)tileDimensions.X, (int)tileDimensions.Y), state);//pass state to load content

                            if (OverlayTiles.Contains("[" + value1.ToString() + ":" + value2.ToString() + "]"))
                            {
                                overlayTiles.Add(tile);
                            }
                            else
                            {
                                underlayTiles.Add(tile);
                            }
                        }
                    }
                }
            }
        }