@@ -287,7 +287,7 @@ def _cast_terrain(raw_terrain: RawTerrain) -> Terrain:
287
287
)
288
288
289
289
290
- def _cast_tile (raw_tile : RawTile ) -> Tile :
290
+ def _cast_tile (raw_tile : RawTile , external_path : Optional [ Path ] = None ) -> Tile :
291
291
"""Cast the raw_tile to a Tile object.
292
292
293
293
Args:
@@ -312,7 +312,10 @@ def _cast_tile(raw_tile: RawTile) -> Tile:
312
312
tile .properties = properties_ .cast (raw_tile ["properties" ])
313
313
314
314
if raw_tile .get ("image" ) is not None :
315
- tile .image = Path (raw_tile ["image" ])
315
+ if external_path :
316
+ tile .image = Path (external_path / raw_tile ["image" ]).absolute ().resolve ()
317
+ else :
318
+ tile .image = Path (raw_tile ["image" ])
316
319
317
320
if raw_tile .get ("imagewidth" ) is not None :
318
321
tile .image_width = raw_tile ["imagewidth" ]
@@ -353,7 +356,7 @@ def _cast_grid(raw_grid: RawGrid) -> Grid:
353
356
)
354
357
355
358
356
- def cast (raw_tileset : RawTileSet ) -> Tileset :
359
+ def cast (raw_tileset : RawTileSet , external_path : Optional [ Path ] = None ) -> Tileset :
357
360
"""Cast the raw tileset into a pytiled_parser type
358
361
359
362
Args:
@@ -383,7 +386,12 @@ def cast(raw_tileset: RawTileSet) -> Tileset:
383
386
tileset .tiled_version = raw_tileset ["tiledversion" ]
384
387
385
388
if raw_tileset .get ("image" ) is not None :
386
- tileset .image = Path (raw_tileset ["image" ])
389
+ if external_path :
390
+ tileset .image = (
391
+ Path (external_path / raw_tileset ["image" ]).absolute ().resolve ()
392
+ )
393
+ else :
394
+ tileset .image = Path (raw_tileset ["image" ])
387
395
388
396
if raw_tileset .get ("imagewidth" ) is not None :
389
397
tileset .image_width = raw_tileset ["imagewidth" ]
@@ -418,7 +426,7 @@ def cast(raw_tileset: RawTileSet) -> Tileset:
418
426
if raw_tileset .get ("tiles" ) is not None :
419
427
tiles = {}
420
428
for raw_tile in raw_tileset ["tiles" ]:
421
- tiles [raw_tile ["id" ]] = _cast_tile (raw_tile )
429
+ tiles [raw_tile ["id" ]] = _cast_tile (raw_tile , external_path = external_path )
422
430
tileset .tiles = tiles
423
431
424
432
return tileset
0 commit comments