예제 #1
0
        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);
        }
예제 #2
0
        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);
        }