add tsx_file and parent_dir properties to TileSet

This commit is contained in:
AberDerBart
2020-03-29 10:56:29 +02:00
parent b447b12c10
commit fae609deb6
2 changed files with 13 additions and 1 deletions

View File

@@ -444,6 +444,10 @@ class TileSet:
Ordered according to the terrain element's appearance in the TSX \
file.
tiles (Optional[Dict[int, Tile]]): Dict of Tile objects by Tile.id.
tsx_file (Path): Path of the file containing the tileset, \
None if loaded internally from a map
parent_dir (Path): Path of the parent directory of the file \
containing the tileset, None if loaded internally from a map
"""
name: str
@@ -459,6 +463,8 @@ class TileSet:
image: Optional[Image] = None
terrain_types: Optional[List[Terrain]] = None
tiles: Optional[Dict[int, "Tile"]] = None
tsx_file: Path = None
parent_dir: Path = None
TileSetDict = Dict[int, TileSet]

View File

@@ -465,9 +465,15 @@ def _parse_external_tile_set(
objects.Tileset: The tileset being parsed.
"""
source = Path(tile_set_element.attrib["source"])
resolved_path = parent_dir / source
tile_set_tree = etree.parse(str(parent_dir / Path(source))).getroot()
return _parse_tile_set(tile_set_tree)
parsed_tile_set = _parse_tile_set(tile_set_tree)
parsed_tile_set.tsx_file = resolved_path
parsed_tile_set.parent_dir = resolved_path.parent
return parsed_tile_set
def _parse_points(point_string: str) -> List[objects.OrderedPair]: