private static void DrawTileOrthogonal(SpriteBatch spriteBatch, TiledMap map, Layer layer, Rectangle destinationRectangle, int drawTileWidth, int drawTileHeight, int X, int Y) { Tileset tileset = map.FindTileset(layer.GlobalTileID[X, Y]); int localTileID = map.GetLocalTileID(layer.GlobalTileID[X, Y]); Point tileCoords = tileset.GetTile(localTileID); Rectangle sourceRect = new Rectangle(tileCoords.X * tileset.TileWidth + tileset.TileSpacing * tileCoords.X, tileCoords.Y * tileset.TileHeight + tileset.TileSpacing * tileCoords.Y, tileset.TileWidth, tileset.TileHeight); Rectangle destinationRect = new Rectangle(X * drawTileWidth + destinationRectangle.X, Y * drawTileHeight + destinationRectangle.Y, (int)(tileset.TileWidth * ((float)destinationRectangle.Width / (float)map.TotalWidth)), (int)(tileset.TileHeight * ((float)destinationRectangle.Height / (float)map.TotalHeight))); spriteBatch.Draw(tileset.Texture, destinationRect, sourceRect, Color.White, 0f, new Vector2(), layer.TileRotation[X, Y], 0f); }
private static void DrawTileIsometric(SpriteBatch spriteBatch, TiledMap map, Layer layer, Rectangle destinationRectangle, int drawTileWidth, int drawTileHeight, int X, int Y) { Tileset tileset = map.FindTileset(layer.GlobalTileID[X, Y]); int localTileID = map.GetLocalTileID(layer.GlobalTileID[X, Y]); Point tileCoords = tileset.GetTile(localTileID); Rectangle sourceRect = new Rectangle(tileCoords.X * tileset.TileWidth, tileCoords.Y * tileset.TileHeight, tileset.TileWidth, tileset.TileHeight); int x = (X + map.Width) * drawTileWidth / 2 - drawTileWidth / 2 - Y * drawTileWidth / 2 + destinationRectangle.X; int y = Y * drawTileHeight / 2 + X * drawTileHeight / 2 + destinationRectangle.Y; Rectangle destinationRect = new Rectangle(x, y, tileset.TileWidth, tileset.TileHeight); spriteBatch.Draw(tileset.Texture, destinationRect, sourceRect, Color.White, 0f, new Vector2(), layer.TileRotation[X, Y], 0f); }