diff --git a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/hexagonal_tile_layer.dart b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/hexagonal_tile_layer.dart index 944c3d16239..97dfccd65e4 100644 --- a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/hexagonal_tile_layer.dart +++ b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/hexagonal_tile_layer.dart @@ -96,7 +96,7 @@ class HexagonalTileLayer extends FlameTileLayer { } final flips = SimpleFlips.fromFlips(tileGid.flips); - final scale = size.x / src.width; + final scale = size.x / map.tileWidth; final anchorX = src.width - halfMapTile.x; final anchorY = src.height - halfMapTile.y; diff --git a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/isometric_tile_layer.dart b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/isometric_tile_layer.dart index f5d573dd699..78c75a612ba 100644 --- a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/isometric_tile_layer.dart +++ b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/isometric_tile_layer.dart @@ -61,7 +61,7 @@ class IsometricTileLayer extends FlameTileLayer { .translate(spriteOffset.dx, spriteOffset.dy), ); final flips = SimpleFlips.fromFlips(tileGid.flips); - final scale = size.x / src.width; + final scale = size.x / map.tileWidth; final anchorX = src.width - halfMapTile.x; final anchorY = src.height - halfMapTile.y; diff --git a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/orthogonal_tile_layer.dart b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/orthogonal_tile_layer.dart index 7f9d971e54c..f8eaac6351d 100644 --- a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/orthogonal_tile_layer.dart +++ b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/orthogonal_tile_layer.dart @@ -60,7 +60,7 @@ class OrthogonalTileLayer extends FlameTileLayer { ); final flips = SimpleFlips.fromFlips(tileGid.flips); - final scale = size.x / src.width; + final scale = size.x / map.tileWidth; final anchorX = src.width - halfMapTile.x; final anchorY = src.height - halfMapTile.y; diff --git a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/staggered_tile_layer.dart b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/staggered_tile_layer.dart index 378ac42c7f6..ba5855371af 100644 --- a/packages/flame_tiled/lib/src/renderable_layers/tile_layers/staggered_tile_layer.dart +++ b/packages/flame_tiled/lib/src/renderable_layers/tile_layers/staggered_tile_layer.dart @@ -96,7 +96,7 @@ class StaggeredTileLayer extends FlameTileLayer { } final flips = SimpleFlips.fromFlips(tileGid.flips); - final scale = size.x / src.width; + final scale = size.x / map.tileWidth; final anchorX = src.width - halfMapTile.x; final anchorY = src.height - halfMapTile.y; diff --git a/packages/flame_tiled/test/assets/oversized_tiles_hexagonal.tmx b/packages/flame_tiled/test/assets/oversized_tiles_hexagonal.tmx new file mode 100644 index 00000000000..822626bacf4 --- /dev/null +++ b/packages/flame_tiled/test/assets/oversized_tiles_hexagonal.tmx @@ -0,0 +1,11 @@ + + + + + + + + eJxjYEAFrlA6lQE7KIbSJUC8AIgBKkgCMg== + + + diff --git a/packages/flame_tiled/test/assets/oversized_tiles_isometric.tmx b/packages/flame_tiled/test/assets/oversized_tiles_isometric.tmx new file mode 100644 index 00000000000..70c10f1a1a2 --- /dev/null +++ b/packages/flame_tiled/test/assets/oversized_tiles_isometric.tmx @@ -0,0 +1,11 @@ + + + + + + + + eJxjYMAOiqB0EpQOhtKFaOoALSgBmQ== + + + diff --git a/packages/flame_tiled/test/assets/oversized_tiles_orthogonal.tmx b/packages/flame_tiled/test/assets/oversized_tiles_orthogonal.tmx new file mode 100644 index 00000000000..3b534d918ea --- /dev/null +++ b/packages/flame_tiled/test/assets/oversized_tiles_orthogonal.tmx @@ -0,0 +1,11 @@ + + + + + + + + eJxjYEAFxVC6hAE7KITSRVAaADKQAcs= + + + diff --git a/packages/flame_tiled/test/assets/oversized_tiles_staggered.tmx b/packages/flame_tiled/test/assets/oversized_tiles_staggered.tmx new file mode 100644 index 00000000000..61f7ba48e31 --- /dev/null +++ b/packages/flame_tiled/test/assets/oversized_tiles_staggered.tmx @@ -0,0 +1,11 @@ + + + + + + + + eJxjYMANDgBxEppYMZQuAeI+IAYANIgCmA== + + + diff --git a/packages/flame_tiled/test/goldens/oversized_tiles_hexagonal.png b/packages/flame_tiled/test/goldens/oversized_tiles_hexagonal.png new file mode 100644 index 00000000000..99159395c23 Binary files /dev/null and b/packages/flame_tiled/test/goldens/oversized_tiles_hexagonal.png differ diff --git a/packages/flame_tiled/test/goldens/oversized_tiles_isometric.png b/packages/flame_tiled/test/goldens/oversized_tiles_isometric.png new file mode 100644 index 00000000000..40e1f191696 Binary files /dev/null and b/packages/flame_tiled/test/goldens/oversized_tiles_isometric.png differ diff --git a/packages/flame_tiled/test/goldens/oversized_tiles_orthogonal.png b/packages/flame_tiled/test/goldens/oversized_tiles_orthogonal.png new file mode 100644 index 00000000000..ef7c2dccda6 Binary files /dev/null and b/packages/flame_tiled/test/goldens/oversized_tiles_orthogonal.png differ diff --git a/packages/flame_tiled/test/goldens/oversized_tiles_staggered.png b/packages/flame_tiled/test/goldens/oversized_tiles_staggered.png new file mode 100644 index 00000000000..b4ebd30f8fc Binary files /dev/null and b/packages/flame_tiled/test/goldens/oversized_tiles_staggered.png differ diff --git a/packages/flame_tiled/test/tiled_test.dart b/packages/flame_tiled/test/tiled_test.dart index 83b5f267d7b..b742ee472b1 100644 --- a/packages/flame_tiled/test/tiled_test.dart +++ b/packages/flame_tiled/test/tiled_test.dart @@ -866,4 +866,39 @@ void main() { }); } }); + + group('oversized tiles', () { + late TiledComponent component; + final size = Vector2(16, 16); + + for (final mapType in [ + 'orthogonal', + 'isometric', + 'hexagonal', + 'staggered' + ]) { + group(mapType, () { + setUp(() async { + Flame.bundle = TestAssetBundle( + imageNames: [ + '0x72_DungeonTilesetII_v1.4.png', + ], + stringNames: ['oversized_tiles_$mapType.tmx'], + ); + component = await TiledComponent.load( + 'oversized_tiles_$mapType.tmx', + size, + ); + }); + + test('renders ($mapType)', () async { + final pngData = await renderMapToPng(component); + await expectLater( + pngData, + matchesGoldenFile('goldens/oversized_tiles_$mapType.png'), + ); + }); + }); + } + }); }