Add recursive link so tiles have a handle to the tileset they are a part of. Needed when pulling additional frames of animation.

This commit is contained in:
Paul Vincent Craven
2019-06-22 15:23:43 -05:00
parent b3edf947f7
commit edd1d30f51
2 changed files with 13 additions and 2 deletions

View File

@@ -470,6 +470,9 @@ class Hitbox:
points: str
class TileSet:
pass
@dataclasses.dataclass
class Tile:
@@ -492,6 +495,7 @@ class Tile:
image: Optional[Image]
hitboxes: Optional[List[Hitbox]]
properties: Optional[List[Property]]
tileset: Optional[TileSet]
@dataclasses.dataclass

View File

@@ -559,7 +559,7 @@ def _parse_tiles(
hitboxes = _parse_hitboxes(tile_hitboxes_element)
tiles[id_] = objects.Tile(
id_, tile_type, tile_terrain, animation, tile_image, hitboxes, properties
id_, tile_type, tile_terrain, animation, tile_image, hitboxes, properties, tileset=None
)
return tiles
@@ -706,7 +706,7 @@ def _parse_tile_set(tile_set_element: etree.Element) -> objects.TileSet:
tile_element_list = tile_set_element.findall("./tile")
tiles = _parse_tiles(tile_element_list)
return objects.TileSet(
tileset = objects.TileSet(
name,
max_tile_size,
spacing,
@@ -721,6 +721,13 @@ def _parse_tile_set(tile_set_element: etree.Element) -> objects.TileSet:
tiles,
)
# Go back and create a circular link so tiles know what tileset they are
# part of. Needed for animation.
for my_id, my_tile in tiles.items():
my_tile.tileset = tileset
return tileset
def parse_tile_map(tmx_file: Union[str, Path]) -> objects.TileMap:
# setting up XML parsing