@@ -287,7 +287,7 @@ def _cast_terrain(raw_terrain: RawTerrain) -> Terrain:
287287 )
288288
289289
290- def _cast_tile (raw_tile : RawTile ) -> Tile :
290+ def _cast_tile (raw_tile : RawTile , external_path : Optional [ Path ] = None ) -> Tile :
291291 """Cast the raw_tile to a Tile object.
292292
293293 Args:
@@ -312,7 +312,10 @@ def _cast_tile(raw_tile: RawTile) -> Tile:
312312 tile .properties = properties_ .cast (raw_tile ["properties" ])
313313
314314 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" ])
316319
317320 if raw_tile .get ("imagewidth" ) is not None :
318321 tile .image_width = raw_tile ["imagewidth" ]
@@ -353,7 +356,7 @@ def _cast_grid(raw_grid: RawGrid) -> Grid:
353356 )
354357
355358
356- def cast (raw_tileset : RawTileSet ) -> Tileset :
359+ def cast (raw_tileset : RawTileSet , external_path : Optional [ Path ] = None ) -> Tileset :
357360 """Cast the raw tileset into a pytiled_parser type
358361
359362 Args:
@@ -383,7 +386,12 @@ def cast(raw_tileset: RawTileSet) -> Tileset:
383386 tileset .tiled_version = raw_tileset ["tiledversion" ]
384387
385388 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" ])
387395
388396 if raw_tileset .get ("imagewidth" ) is not None :
389397 tileset .image_width = raw_tileset ["imagewidth" ]
@@ -418,7 +426,7 @@ def cast(raw_tileset: RawTileSet) -> Tileset:
418426 if raw_tileset .get ("tiles" ) is not None :
419427 tiles = {}
420428 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 )
422430 tileset .tiles = tiles
423431
424432 return tileset
0 commit comments