Skip to content

Commit 41c9439

Browse files
authored
feat: Omit TiledImage without source from TiledMap.tiledImages (flame-engine#68)
1 parent 1d3043f commit 41c9439

File tree

2 files changed

+74
-5
lines changed

2 files changed

+74
-5
lines changed

packages/tiled/lib/src/tiled_map.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,17 +205,22 @@ class TiledMap {
205205
final imageSet = <TiledImage>{};
206206
for (var i = 0; i < tilesets.length; ++i) {
207207
final image = tilesets[i].image;
208-
if (image != null) {
209-
imageSet.add(image);
208+
if (image?.source != null) {
209+
imageSet.add(image!);
210210
}
211211
for (var j = 0; j < tilesets[i].tiles.length; ++j) {
212212
final image = tilesets[i].tiles[j].image;
213-
if (image != null) {
214-
imageSet.add(image);
213+
if (image?.source != null) {
214+
imageSet.add(image!);
215215
}
216216
}
217217
}
218-
imageSet.addAll(layers.whereType<ImageLayer>().map((e) => e.image));
218+
imageSet.addAll(
219+
layers
220+
.whereType<ImageLayer>()
221+
.map((e) => e.image)
222+
.where((e) => e.source != null),
223+
);
219224
return imageSet.toList();
220225
}
221226

packages/tiled/test/map_test.dart

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,70 @@ void main() {
287287
});
288288
});
289289

290+
group('Map.tiledImages', () {
291+
late TiledMap map;
292+
setUp(() {
293+
map = TiledMap(
294+
width: 10,
295+
height: 10,
296+
tileWidth: 16,
297+
tileHeight: 16,
298+
layers: [
299+
ImageLayer(
300+
name: 'image layer 1',
301+
image: const TiledImage(),
302+
repeatX: false,
303+
repeatY: false,
304+
),
305+
ImageLayer(
306+
name: 'image layer 2',
307+
image: const TiledImage(source: 'image_layer_2.png'),
308+
repeatX: false,
309+
repeatY: false,
310+
),
311+
],
312+
tilesets: [
313+
Tileset(
314+
name: 'tileset 1',
315+
image: const TiledImage(source: 'tileset_1.png'),
316+
),
317+
Tileset(
318+
name: 'tileset 2',
319+
image: const TiledImage(),
320+
),
321+
Tileset(
322+
name: 'tileset 3',
323+
tiles: [
324+
Tile(
325+
localId: 0,
326+
image: const TiledImage(source: 'tile_0.png'),
327+
),
328+
Tile(
329+
localId: 1,
330+
image: const TiledImage(),
331+
),
332+
],
333+
)
334+
],
335+
);
336+
});
337+
test('returns images with source', () {
338+
final imageSources = map.tiledImages().map((e) => e.source);
339+
340+
expect(imageSources, hasLength(3));
341+
expect(
342+
imageSources,
343+
containsAll(
344+
<String>[
345+
'image_layer_2.png',
346+
'tileset_1.png',
347+
'tile_0.png',
348+
],
349+
),
350+
);
351+
});
352+
});
353+
290354
group('Map.getTileSet', () {
291355
late TiledMap map;
292356
final tileset = Tileset(

0 commit comments

Comments
 (0)