Skip to content

Commit 95ed454

Browse files
committed
Support for tilerendersize and fillmode on tileset
1 parent 75049e3 commit 95ed454

File tree

6 files changed

+29
-6
lines changed

6 files changed

+29
-6
lines changed

pytiled_parser/parsers/json/tileset.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@
7474
"margin": int,
7575
"name": str,
7676
"properties": List[RawProperty],
77+
"fillmode": str,
7778
"objectalignment": str,
7879
"source": str,
7980
"spacing": int,
8081
"tilecount": int,
8182
"tiledversion": str,
8283
"tileheight": int,
8384
"tileoffset": RawTileOffset,
85+
"tilerendersize": str,
8486
"tiles": List[RawTile],
8587
"tilewidth": int,
8688
"transparentcolor": str,
@@ -296,4 +298,10 @@ def parse(
296298
if raw_tileset.get("class") is not None:
297299
tileset.class_ = raw_tileset["class"]
298300

301+
if raw_tileset.get("tilerendersize") is not None:
302+
tileset.tile_render_size = raw_tileset["tilerendersize"]
303+
304+
if raw_tileset.get("fillmode") is not None:
305+
tileset.fill_mode = raw_tileset["fillmode"]
306+
299307
return tileset

pytiled_parser/parsers/tmx/tileset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,12 @@ def parse(
147147
if raw_tileset.attrib.get("class") is not None:
148148
tileset.class_ = raw_tileset.attrib["class"]
149149

150+
if raw_tileset.attrib.get("fillmode") is not None:
151+
tileset.fill_mode = raw_tileset.attrib["fillmode"]
152+
153+
if raw_tileset.attrib.get("tilerendersize") is not None:
154+
tileset.tile_render_size = raw_tileset.attrib["tilerendersize"]
155+
150156
image_element = raw_tileset.find("image")
151157
if image_element is not None:
152158
if external_path:

pytiled_parser/tileset.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ class Tileset:
183183
implementation in a game engine would need to use these values.
184184
alignment: Which alignment to use for tile objects from this tileset.
185185
class_: The Tiled class of this TileSet.
186+
tile_render_size: The size to use when rendering tiles from this tileset. Can be either "tile" or "grid".
187+
fill_mode: The fill mode to use when rendering tiles from this tileset.
188+
Can be either "stretch" or "preserve-aspect-fit".
186189
"""
187190

188191
name: str
@@ -195,6 +198,8 @@ class Tileset:
195198
firstgid: int
196199

197200
type: str = "tileset"
201+
tile_render_size: str = "tile"
202+
fill_mode: str = "stretch"
198203

199204
spacing: int = 0
200205
margin: int = 0

tests/test_data/tilesets/image/expected.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@
1212
spacing=1,
1313
name="tile_set_image",
1414
tile_count=48,
15-
tiled_version="1.8.5",
15+
tiled_version="1.9.1",
1616
tile_height=32,
1717
tile_width=32,
18-
version="1.8",
18+
version="1.9",
1919
type="tileset",
20-
alignment="topleft"
20+
alignment="topleft",
21+
tile_render_size="grid",
22+
fill_mode="preserve-aspect-fit"
2123
)
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{ "columns":8,
2+
"fillmode":"preserve-aspect-fit",
23
"image":"..\/..\/images\/tmw_desert_spacing.png",
34
"imageheight":199,
45
"imagewidth":265,
@@ -7,9 +8,10 @@
78
"objectalignment":"topleft",
89
"spacing":1,
910
"tilecount":48,
10-
"tiledversion":"1.9.0",
11+
"tiledversion":"1.9.1",
1112
"tileheight":32,
13+
"tilerendersize":"grid",
1214
"tilewidth":32,
1315
"type":"tileset",
14-
"version":"1.8"
16+
"version":"1.9"
1517
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<tileset version="1.9" tiledversion="1.9.0" name="tile_set_image" tilewidth="32" tileheight="32" spacing="1" margin="1" tilecount="48" columns="8" objectalignment="topleft">
2+
<tileset version="1.9" tiledversion="1.9.1" name="tile_set_image" tilewidth="32" tileheight="32" spacing="1" margin="1" tilecount="48" columns="8" objectalignment="topleft" tilerendersize="grid" fillmode="preserve-aspect-fit">
33
<image source="../../images/tmw_desert_spacing.png" width="265" height="199"/>
44
</tileset>

0 commit comments

Comments
 (0)