Support for tilerendersize and fillmode on tileset

This commit is contained in:
Darren Eberly
2022-08-12 23:24:39 -04:00
parent 75049e3152
commit 95ed454e95
6 changed files with 29 additions and 6 deletions

View File

@@ -74,6 +74,7 @@ RawTileSet = TypedDict(
"margin": int,
"name": str,
"properties": List[RawProperty],
"fillmode": str,
"objectalignment": str,
"source": str,
"spacing": int,
@@ -81,6 +82,7 @@ RawTileSet = TypedDict(
"tiledversion": str,
"tileheight": int,
"tileoffset": RawTileOffset,
"tilerendersize": str,
"tiles": List[RawTile],
"tilewidth": int,
"transparentcolor": str,
@@ -296,4 +298,10 @@ def parse(
if raw_tileset.get("class") is not None:
tileset.class_ = raw_tileset["class"]
if raw_tileset.get("tilerendersize") is not None:
tileset.tile_render_size = raw_tileset["tilerendersize"]
if raw_tileset.get("fillmode") is not None:
tileset.fill_mode = raw_tileset["fillmode"]
return tileset

View File

@@ -147,6 +147,12 @@ def parse(
if raw_tileset.attrib.get("class") is not None:
tileset.class_ = raw_tileset.attrib["class"]
if raw_tileset.attrib.get("fillmode") is not None:
tileset.fill_mode = raw_tileset.attrib["fillmode"]
if raw_tileset.attrib.get("tilerendersize") is not None:
tileset.tile_render_size = raw_tileset.attrib["tilerendersize"]
image_element = raw_tileset.find("image")
if image_element is not None:
if external_path:

View File

@@ -183,6 +183,9 @@ class Tileset:
implementation in a game engine would need to use these values.
alignment: Which alignment to use for tile objects from this tileset.
class_: The Tiled class of this TileSet.
tile_render_size: The size to use when rendering tiles from this tileset. Can be either "tile" or "grid".
fill_mode: The fill mode to use when rendering tiles from this tileset.
Can be either "stretch" or "preserve-aspect-fit".
"""
name: str
@@ -195,6 +198,8 @@ class Tileset:
firstgid: int
type: str = "tileset"
tile_render_size: str = "tile"
fill_mode: str = "stretch"
spacing: int = 0
margin: int = 0

View File

@@ -12,10 +12,12 @@ EXPECTED = tileset.Tileset(
spacing=1,
name="tile_set_image",
tile_count=48,
tiled_version="1.8.5",
tiled_version="1.9.1",
tile_height=32,
tile_width=32,
version="1.8",
version="1.9",
type="tileset",
alignment="topleft"
alignment="topleft",
tile_render_size="grid",
fill_mode="preserve-aspect-fit"
)

View File

@@ -1,4 +1,5 @@
{ "columns":8,
"fillmode":"preserve-aspect-fit",
"image":"..\/..\/images\/tmw_desert_spacing.png",
"imageheight":199,
"imagewidth":265,
@@ -7,9 +8,10 @@
"objectalignment":"topleft",
"spacing":1,
"tilecount":48,
"tiledversion":"1.9.0",
"tiledversion":"1.9.1",
"tileheight":32,
"tilerendersize":"grid",
"tilewidth":32,
"type":"tileset",
"version":"1.8"
"version":"1.9"
}

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<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">
<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">
<image source="../../images/tmw_desert_spacing.png" width="265" height="199"/>
</tileset>