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); }
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++; } }
private void TestGetBytes(byte[] data) { OverlayTiles overlayTiles = new OverlayTiles(data, this.overlayTileSizes, this.overlayTilePatterns); byte[] dataAfter = overlayTiles.GetBytes(); Assert.AreEqual(data, dataAfter); }
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); } } } } } }
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); } } } } } }
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); } } } } } }