diff --git a/pytiled_parser/tileset.py b/pytiled_parser/tileset.py index c307afe..a0d6422 100644 --- a/pytiled_parser/tileset.py +++ b/pytiled_parser/tileset.py @@ -236,84 +236,6 @@ class RawTileSet(TypedDict): version: float -def cast(raw_tileset: RawTileSet) -> TileSet: - """ Cast the raw tileset into a pytiled_parser type - - Args: - raw_tileset: Raw Tileset to be cast. - - Returns: - TileSet: a properly typed TileSet. - """ - - name = raw_tileset["name"] - - tile_count = raw_tileset["tilecount"] - tile_width = raw_tileset["tilewidth"] - tile_height = raw_tileset["tileheight"] - columns = raw_tileset["columns"] - - spacing = raw_tileset["spacing"] - margin = raw_tileset["margin"] - - version = raw_tileset["version"] - tiled_version = raw_tileset["tiledversion"] - - image = Path(raw_tileset["image"]) - image_width = raw_tileset["imagewidth"] - image_height = raw_tileset["imageheight"] - - tileset = TileSet( - name=name, - tile_count=tile_count, - tile_width=tile_width, - tile_height=tile_height, - columns=columns, - spacing=spacing, - margin=margin, - version=version, - tiled_version=tiled_version, - image=image, - image_width=image_width, - image_height=image_height, - ) - - if raw_tileset.get("firstgid") is not None: - tileset.firstgid = raw_tileset["firstgid"] - - if raw_tileset.get("backgroundcolor") is not None: - tileset.background_color = raw_tileset["backgroundcolor"] - - if raw_tileset.get("tileoffset") is not None: - tileset.tile_offset = _cast_tile_offset(raw_tileset["tileoffset"]) - - if raw_tileset.get("transparentcolor") is not None: - tileset.transparent_color = raw_tileset["transparentcolor"] - - if raw_tileset.get("grid") is not None: - tileset.grid = _cast_grid(raw_tileset["grid"]) - - if raw_tileset.get("properties") is not None: - tileset.properties = properties_.cast(raw_tileset["properties"]) - - if raw_tileset.get("terrains") is not None: - terrains = [] - for raw_terrain in raw_tileset["terrains"]: - terrains.append(_cast_terrain(raw_terrain)) - tileset.terrain_types = terrains - - if raw_tileset.get("tiles") is not None: - tiles = [] - for raw_tile in raw_tileset["tiles"]: - tiles.append(_cast_tile(raw_tile)) - tileset.tiles = tiles - - if raw_tileset.get("source") is not None: - tileset.source_file = Path(raw_tileset["source"]) - - return tileset - - def _cast_frame(raw_frame: RawFrame) -> Frame: """ Cast the raw_frame to a Frame. @@ -421,3 +343,81 @@ def _cast_grid(raw_grid: RawGrid) -> Grid: width=raw_grid["width"], height=raw_grid["height"], ) + + +def cast(raw_tileset: RawTileSet) -> TileSet: + """ Cast the raw tileset into a pytiled_parser type + + Args: + raw_tileset: Raw Tileset to be cast. + + Returns: + TileSet: a properly typed TileSet. + """ + + name = raw_tileset["name"] + + tile_count = raw_tileset["tilecount"] + tile_width = raw_tileset["tilewidth"] + tile_height = raw_tileset["tileheight"] + columns = raw_tileset["columns"] + + spacing = raw_tileset["spacing"] + margin = raw_tileset["margin"] + + version = raw_tileset["version"] + tiled_version = raw_tileset["tiledversion"] + + image = Path(raw_tileset["image"]) + image_width = raw_tileset["imagewidth"] + image_height = raw_tileset["imageheight"] + + tileset = TileSet( + name=name, + tile_count=tile_count, + tile_width=tile_width, + tile_height=tile_height, + columns=columns, + spacing=spacing, + margin=margin, + version=version, + tiled_version=tiled_version, + image=image, + image_width=image_width, + image_height=image_height, + ) + + if raw_tileset.get("firstgid") is not None: + tileset.firstgid = raw_tileset["firstgid"] + + if raw_tileset.get("backgroundcolor") is not None: + tileset.background_color = raw_tileset["backgroundcolor"] + + if raw_tileset.get("tileoffset") is not None: + tileset.tile_offset = _cast_tile_offset(raw_tileset["tileoffset"]) + + if raw_tileset.get("transparentcolor") is not None: + tileset.transparent_color = raw_tileset["transparentcolor"] + + if raw_tileset.get("grid") is not None: + tileset.grid = _cast_grid(raw_tileset["grid"]) + + if raw_tileset.get("properties") is not None: + tileset.properties = properties_.cast(raw_tileset["properties"]) + + if raw_tileset.get("terrains") is not None: + terrains = [] + for raw_terrain in raw_tileset["terrains"]: + terrains.append(_cast_terrain(raw_terrain)) + tileset.terrain_types = terrains + + if raw_tileset.get("tiles") is not None: + tiles = [] + for raw_tile in raw_tileset["tiles"]: + tiles.append(_cast_tile(raw_tile)) + tileset.tiles = tiles + + if raw_tileset.get("source") is not None: + tileset.source_file = Path(raw_tileset["source"]) + + return tileset