From 5daac4a35b4e7480bc4d844221d408d30ec1a1fc Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Sun, 30 Oct 2022 15:34:20 -0700 Subject: [PATCH] fix: support parsing empty tile terrain values --- packages/tiled/lib/src/tileset/tile.dart | 4 ++-- .../test/fixtures/map_with_empty_terrains.tmx | 19 +++++++++++++++++++ packages/tiled/test/parser_test.dart | 12 ++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 packages/tiled/test/fixtures/map_with_empty_terrains.tmx diff --git a/packages/tiled/lib/src/tileset/tile.dart b/packages/tiled/lib/src/tileset/tile.dart index 059a134..1addaa4 100644 --- a/packages/tiled/lib/src/tileset/tile.dart +++ b/packages/tiled/lib/src/tileset/tile.dart @@ -24,7 +24,7 @@ class Tile { double probability; /// List of indexes of the terrain. - List terrain; + List terrain; TiledImage? image; Layer? objectGroup; @@ -60,7 +60,7 @@ class Tile { terrain: parser .getStringOrNull('terrain') ?.split(',') - .map(int.parse) + .map((str) => str.isEmpty ? null : int.parse(str)) .toList() ?? [], image: parser.getSingleChildOrNullAs('image', TiledImage.parse), diff --git a/packages/tiled/test/fixtures/map_with_empty_terrains.tmx b/packages/tiled/test/fixtures/map_with_empty_terrains.tmx new file mode 100644 index 0000000..a6c8c3b --- /dev/null +++ b/packages/tiled/test/fixtures/map_with_empty_terrains.tmx @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/packages/tiled/test/parser_test.dart b/packages/tiled/test/parser_test.dart index b9e0624..bae27cb 100644 --- a/packages/tiled/test/parser_test.dart +++ b/packages/tiled/test/parser_test.dart @@ -373,6 +373,18 @@ void main() { ); }); }); + + group('Parser tiles', () { + test('support empty terrain values', () { + final xml = File('./test/fixtures/map_with_empty_terrains.tmx') + .readAsStringSync(); + final tiledMap = TileMapParser.parseTmx(xml); + + final tileset = tiledMap.tilesets.first; + final tile = tileset.tiles.first; + expect(tile.terrain, anyElement(isNull)); + }); + }); } class CustomTsxProvider extends TsxProvider {