Skip to content

Commit 17700e8

Browse files
committed
Fix for JSON object template loading new tilesets
1 parent fe75327 commit 17700e8

File tree

1 file changed

+53
-52
lines changed

1 file changed

+53
-52
lines changed

pytiled_parser/parsers/json/tiled_map.py

Lines changed: 53 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -17,35 +17,35 @@
1717
from pytiled_parser.tiled_map import TiledMap, TilesetDict
1818
from 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+
)
4949
RawTiledMap.__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

Comments
 (0)