1717from pytiled_parser .tiled_map import TiledMap , TilesetDict
1818from pytiled_parser .util import check_format , parse_color
1919
20- RawTilesetMapping = TypedDict ("RawTilesetMapping" , {
21- "firstgid" : int ,
22- "source" : str
23- })
24-
25-
26- RawTiledMap = TypedDict ( "RawTiledMap" , {
27- "backgroundcolor " : str ,
28- "compressionlevel " : int ,
29- "height " : int ,
30- "hexsidelength " : int ,
31- "infinite " : bool ,
32- "layers " : List [ RawLayer ] ,
33- "nextlayerid " : int ,
34- "nextobjectid " : int ,
35- "orientation " : str ,
36- "properties " : List [ RawProperty ] ,
37- "renderorder " : str ,
38- "staggeraxis " : str ,
39- "staggerindex " : str ,
40- "tiledversion " : str ,
41- "tileheight " : int ,
42- "tilesets " : List [ RawTilesetMapping ] ,
43- "tilewidth " : int ,
44- "class " : str ,
45- "type " : str ,
46- "version " : Union [ str , float ] ,
47- "width" : int
48- } )
20+ RawTilesetMapping = TypedDict ("RawTilesetMapping" , {"firstgid" : int , "source" : str })
21+
22+
23+ RawTiledMap = TypedDict (
24+ "RawTiledMap" ,
25+ {
26+ "backgroundcolor" : str ,
27+ "compressionlevel " : int ,
28+ "height " : int ,
29+ "hexsidelength " : int ,
30+ "infinite " : bool ,
31+ "layers " : List [ RawLayer ] ,
32+ "nextlayerid " : int ,
33+ "nextobjectid " : int ,
34+ "orientation " : str ,
35+ "properties " : List [ RawProperty ] ,
36+ "renderorder " : str ,
37+ "staggeraxis " : str ,
38+ "staggerindex " : str ,
39+ "tiledversion " : str ,
40+ "tileheight " : int ,
41+ "tilesets " : List [ RawTilesetMapping ] ,
42+ "tilewidth " : int ,
43+ "class " : str ,
44+ "type " : str ,
45+ "version " : Union [ str , float ] ,
46+ "width " : int ,
47+ },
48+ )
4949RawTiledMap .__doc__ = """
5050 The keys and their types that appear in a Tiled JSON Map Object.
5151
@@ -102,7 +102,7 @@ def parse(file: Path) -> TiledMap:
102102 raw_tileset , raw_tileset ["firstgid" ]
103103 )
104104
105- if isinstance (raw_tiled_map ["version" ], float ): # pragma: no cover
105+ if isinstance (raw_tiled_map ["version" ], float ): # pragma: no cover
106106 version = str (raw_tiled_map ["version" ])
107107 else :
108108 version = raw_tiled_map ["version" ]
@@ -128,30 +128,31 @@ def parse(file: Path) -> TiledMap:
128128 for my_layer in layers :
129129 for tiled_object in my_layer .tiled_objects : # type: ignore
130130 if hasattr (tiled_object , "new_tileset" ):
131- already_loaded = None
132- for val in map_ .tilesets .values ():
133- if val .name == tiled_object .new_tileset ["name" ]:
134- already_loaded = val
135- break
136-
137- if not already_loaded :
138- highest_firstgid = max (map_ .tilesets .keys ())
139- last_tileset_count = map_ .tilesets [highest_firstgid ].tile_count
140- new_firstgid = highest_firstgid + last_tileset_count
141- map_ .tilesets [new_firstgid ] = parse_json_tileset (
142- tiled_object .new_tileset ,
143- new_firstgid ,
144- tiled_object .new_tileset_path ,
145- )
146- tiled_object .gid = tiled_object .gid + (new_firstgid - 1 )
131+ if tiled_object .new_tileset is not None :
132+ already_loaded = None
133+ for val in map_ .tilesets .values ():
134+ if val .name == tiled_object .new_tileset ["name" ]:
135+ already_loaded = val
136+ break
137+
138+ if not already_loaded :
139+ highest_firstgid = max (map_ .tilesets .keys ())
140+ last_tileset_count = map_ .tilesets [highest_firstgid ].tile_count
141+ new_firstgid = highest_firstgid + last_tileset_count
142+ map_ .tilesets [new_firstgid ] = parse_json_tileset (
143+ tiled_object .new_tileset ,
144+ new_firstgid ,
145+ tiled_object .new_tileset_path ,
146+ )
147+ tiled_object .gid = tiled_object .gid + (new_firstgid - 1 )
147148
148- else :
149- tiled_object .gid = tiled_object .gid + (
150- already_loaded .firstgid - 1
151- )
149+ else :
150+ tiled_object .gid = tiled_object .gid + (
151+ already_loaded .firstgid - 1
152+ )
152153
153- tiled_object .new_tileset = None
154- tiled_object .new_tileset_path = None
154+ tiled_object .new_tileset = None
155+ tiled_object .new_tileset_path = None
155156
156157 if raw_tiled_map .get ("class" ) is not None :
157158 map_ .class_ = raw_tiled_map ["class" ]
0 commit comments