From 136af7692f2649540777588cfeb38c2ce47f85c6 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 31 Mar 2021 20:26:55 -0400 Subject: [PATCH 1/3] Add support for Parallax Scrolling --- pytiled_parser/layer.py | 8 ++++++++ .../test_data/layer_tests/all_layer_types/expected.py | 3 +++ tests/test_data/layer_tests/all_layer_types/map.json | 10 ++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/pytiled_parser/layer.py b/pytiled_parser/layer.py index c155cdf..9f86553 100644 --- a/pytiled_parser/layer.py +++ b/pytiled_parser/layer.py @@ -56,6 +56,7 @@ class Layer: visible: bool coordinates: OrderedPair = OrderedPair(0, 0) + parallax_factor: OrderedPair = OrderedPair(1, 1) id: Optional[int] = None size: Optional[Size] = None @@ -195,6 +196,8 @@ class RawLayer(TypedDict): objects: List[tiled_object.RawTiledObject] offsetx: float offsety: float + parallaxx: float + parallaxy: float opacity: float properties: List[properties_.RawProperty] startx: int @@ -350,6 +353,11 @@ def _get_common_attributes(raw_layer: RawLayer) -> Layer: if raw_layer.get("properties") is not None: common_attributes.properties = properties_.cast(raw_layer["properties"]) + if raw_layer.get("parallaxx") is not None: + common_attributes.parallax_factor = OrderedPair( + raw_layer["parallaxx"], raw_layer["parallaxy"] + ) + return common_attributes diff --git a/tests/test_data/layer_tests/all_layer_types/expected.py b/tests/test_data/layer_tests/all_layer_types/expected.py index 398a69a..9756763 100644 --- a/tests/test_data/layer_tests/all_layer_types/expected.py +++ b/tests/test_data/layer_tests/all_layer_types/expected.py @@ -10,6 +10,7 @@ EXPECTED = [ id=1, size=common_types.Size(8, 6), offset=common_types.OrderedPair(1, 3), + parallax_factor=common_types.OrderedPair(1.4, 1.3), properties={ "test": "test property", }, @@ -81,6 +82,7 @@ EXPECTED = [ opacity=1, visible=True, id=4, + parallax_factor=common_types.OrderedPair(2.3, 1.2), layers=[ layer.ObjectLayer( name="Object Layer 1", @@ -115,6 +117,7 @@ EXPECTED = [ opacity=1, visible=True, id=5, + parallax_factor=common_types.OrderedPair(1.5, 1.2), image=Path("../../images/tile_04.png"), ), ] diff --git a/tests/test_data/layer_tests/all_layer_types/map.json b/tests/test_data/layer_tests/all_layer_types/map.json index 18e6848..6c459de 100644 --- a/tests/test_data/layer_tests/all_layer_types/map.json +++ b/tests/test_data/layer_tests/all_layer_types/map.json @@ -10,6 +10,8 @@ "offsetx":1, "offsety":3, "opacity":1, + "parallaxx":1.4, + "parallaxy":1.3, "properties":[ { "name":"test", @@ -49,6 +51,8 @@ }], "name":"Group 1", "opacity":1, + "parallaxx":2.3, + "parallaxy":1.2, "type":"group", "visible":true, "x":0, @@ -70,6 +74,8 @@ "image":"..\/..\/images\/tile_04.png", "name":"Image Layer 2", "opacity":1, + "parallaxx":1.5, + "parallaxy":1.2, "type":"imagelayer", "visible":true, "x":0, @@ -79,7 +85,7 @@ "nextobjectid":3, "orientation":"orthogonal", "renderorder":"right-down", - "tiledversion":"1.4.1", + "tiledversion":"1.5.0", "tileheight":32, "tilesets":[ { @@ -88,6 +94,6 @@ }], "tilewidth":32, "type":"map", - "version":1.4, + "version":1.5, "width":8 } \ No newline at end of file From 12e498e03f23fb7920c6d0ddb45a5a746bf8b935 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 31 Mar 2021 20:41:59 -0400 Subject: [PATCH 2/3] Support for layer tint colors --- pytiled_parser/layer.py | 5 +++++ tests/test_data/layer_tests/all_layer_types/expected.py | 3 +++ tests/test_data/layer_tests/all_layer_types/map.json | 3 +++ 3 files changed, 11 insertions(+) diff --git a/pytiled_parser/layer.py b/pytiled_parser/layer.py index 9f86553..58bcc98 100644 --- a/pytiled_parser/layer.py +++ b/pytiled_parser/layer.py @@ -62,6 +62,7 @@ class Layer: size: Optional[Size] = None offset: Optional[OrderedPair] = None properties: Optional[properties_.Properties] = None + tint_color: Optional[Color] = None TileLayerGrid = List[List[int]] @@ -202,6 +203,7 @@ class RawLayer(TypedDict): properties: List[properties_.RawProperty] startx: int starty: int + tintcolor: str transparentcolor: str type: str visible: bool @@ -358,6 +360,9 @@ def _get_common_attributes(raw_layer: RawLayer) -> Layer: raw_layer["parallaxx"], raw_layer["parallaxy"] ) + if raw_layer.get("tintcolor") is not None: + common_attributes.tint_color = parse_color(raw_layer["tintcolor"]) + return common_attributes diff --git a/tests/test_data/layer_tests/all_layer_types/expected.py b/tests/test_data/layer_tests/all_layer_types/expected.py index 9756763..0279b32 100644 --- a/tests/test_data/layer_tests/all_layer_types/expected.py +++ b/tests/test_data/layer_tests/all_layer_types/expected.py @@ -14,6 +14,7 @@ EXPECTED = [ properties={ "test": "test property", }, + tint_color=common_types.Color(170, 255, 255, 255), data=[ [ 1, @@ -83,6 +84,7 @@ EXPECTED = [ visible=True, id=4, parallax_factor=common_types.OrderedPair(2.3, 1.2), + tint_color=common_types.Color(0, 0, 255, 255), layers=[ layer.ObjectLayer( name="Object Layer 1", @@ -111,6 +113,7 @@ EXPECTED = [ id=3, image=Path("../../images/tile_04.png"), transparent_color=common_types.Color(0, 0, 0, 255), + tint_color=common_types.Color(255, 0, 0, 255), ), layer.ImageLayer( name="Image Layer 2", diff --git a/tests/test_data/layer_tests/all_layer_types/map.json b/tests/test_data/layer_tests/all_layer_types/map.json index 6c459de..8d08251 100644 --- a/tests/test_data/layer_tests/all_layer_types/map.json +++ b/tests/test_data/layer_tests/all_layer_types/map.json @@ -18,6 +18,7 @@ "type":"string", "value":"test property" }], + "tintcolor":"#aaffff", "type":"tilelayer", "visible":true, "width":8, @@ -53,6 +54,7 @@ "opacity":1, "parallaxx":2.3, "parallaxy":1.2, + "tintcolor":"#0000ff", "type":"group", "visible":true, "x":0, @@ -63,6 +65,7 @@ "image":"..\/..\/images\/tile_04.png", "name":"Image Layer 1", "opacity":1, + "tintcolor":"#ff0000", "transparentcolor":"#000000", "type":"imagelayer", "visible":true, From 2ced9d4110e09778495c9cd92c451934a5e39ebc Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 31 Mar 2021 20:49:06 -0400 Subject: [PATCH 3/3] Update CHANGELOG and version number to 1.3.0 --- CHANGELOG.md | 6 ++++++ pytiled_parser/version.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdd9e04..c548977 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [1.3.0] - 2021-03-31 + +- Added support for Parallax Scroll Factor on Layers. See https://doc.mapeditor.org/en/stable/manual/layers/#parallax-scrolling-factor + +- Added support for Tint Colors on Layers. See https://doc.mapeditor.org/en/stable/manual/layers/#tinting-layers + ## [1.2.0] - 2021-02-21 ### Changed diff --git a/pytiled_parser/version.py b/pytiled_parser/version.py index ad19cf1..e16e45d 100644 --- a/pytiled_parser/version.py +++ b/pytiled_parser/version.py @@ -1,3 +1,3 @@ """pytiled_parser version""" -__version__ = "1.2.0" +__version__ = "1.3.0"