mirror of
https://github.com/OMGeeky/pytiled_parser.git
synced 2025-12-29 15:49:49 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user