From 7c190fc8ec03ebb0450d10c09789b288827cb0f3 Mon Sep 17 00:00:00 2001 From: Hwanseok Date: Mon, 11 Apr 2022 23:32:48 +0900 Subject: [PATCH 1/2] fix: Possibility to create RenderableTiledMap from TiledMap --- .../lib/src/renderable_tile_map.dart | 34 +++++++------------ packages/flame_tiled/pubspec.yaml | 2 +- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/packages/flame_tiled/lib/src/renderable_tile_map.dart b/packages/flame_tiled/lib/src/renderable_tile_map.dart index 8522926a246..15855a738d0 100644 --- a/packages/flame_tiled/lib/src/renderable_tile_map.dart +++ b/packages/flame_tiled/lib/src/renderable_tile_map.dart @@ -5,7 +5,6 @@ import 'package:flame/extensions.dart'; import 'package:flame/flame.dart'; import 'package:flame/sprite.dart'; import 'package:tiled/tiled.dart'; -import 'package:xml/xml.dart'; import 'flame_tsx_provider.dart'; import 'simple_flips.dart'; @@ -103,7 +102,18 @@ class RenderableTiledMap { String contents, Vector2 destTileSize, ) async { - final map = await _loadMap(contents); + final map = await TiledMap.fromString( + contents, + FlameTsxProvider.parse, + ); + return fromTiledMap(map, destTileSize); + } + + /// Parses a [TiledMap] returning a [RenderableTiledMap]. + static Future fromTiledMap( + TiledMap map, + Vector2 destTileSize, + ) async { final batchesByLayer = await Future.wait( _renderableTileLayers(map).map((e) => _loadImages(map)), ); @@ -119,26 +129,6 @@ class RenderableTiledMap { return map.layers.where((layer) => layer.visible).whereType(); } - static Future _loadMap(String contents) async { - final tsxSourcePaths = XmlDocument.parse(contents) - .rootElement - .children - .whereType() - .where((element) => element.name.local == 'tileset') - .map((e) => e.getAttribute('source')); - - final tsxProviders = await Future.wait( - tsxSourcePaths - .where((key) => key != null) - .map((key) async => FlameTsxProvider.parse(key!)), - ); - - return TileMapParser.parseTmx( - contents, - tsxList: tsxProviders.isEmpty ? null : tsxProviders, - ); - } - static Future> _loadImages(TiledMap map) async { final result = {}; diff --git a/packages/flame_tiled/pubspec.yaml b/packages/flame_tiled/pubspec.yaml index 7f9a1a4fbf8..da1c5ec798e 100644 --- a/packages/flame_tiled/pubspec.yaml +++ b/packages/flame_tiled/pubspec.yaml @@ -9,7 +9,7 @@ environment: dependencies: flame: ^1.1.0 - tiled: ^0.8.0 + tiled: ^0.8.1 xml: ^5.3.0 meta: ^1.7.0 collection: ^1.15.0 From d58b08aabcb31df23f014288c72abf5197299056 Mon Sep 17 00:00:00 2001 From: Hwanseok Date: Tue, 12 Apr 2022 11:32:53 +0900 Subject: [PATCH 2/2] fix: Propagated typo --- packages/flame_tiled/lib/src/flame_tsx_provider.dart | 2 +- packages/flame_tiled/test/tiled_test.dart | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/flame_tiled/lib/src/flame_tsx_provider.dart b/packages/flame_tiled/lib/src/flame_tsx_provider.dart index 77f39343852..c338c6ee358 100644 --- a/packages/flame_tiled/lib/src/flame_tsx_provider.dart +++ b/packages/flame_tiled/lib/src/flame_tsx_provider.dart @@ -24,7 +24,7 @@ class FlameTsxProvider implements TsxProvider { } @override - Parser? getChachedSource() { + Parser? getCachedSource() { if (data.isEmpty) { return null; } diff --git a/packages/flame_tiled/test/tiled_test.dart b/packages/flame_tiled/test/tiled_test.dart index 7a98a3551fa..5c5d7c8c055 100644 --- a/packages/flame_tiled/test/tiled_test.dart +++ b/packages/flame_tiled/test/tiled_test.dart @@ -23,10 +23,10 @@ void main() { test('correctly loads external tileset', () async { final tsxProvider = await FlameTsxProvider.parse('external_tileset_1.tsx'); - expect(tsxProvider.getChachedSource() != null, true); + expect(tsxProvider.getCachedSource() != null, true); expect( tsxProvider - .getChachedSource()! + .getCachedSource()! .getSingleChild('tileset') .getString('name') == 'level1',