diff --git a/pytiled_parser/parsers/json/tiled_map.py b/pytiled_parser/parsers/json/tiled_map.py index 030683c..b01050f 100644 --- a/pytiled_parser/parsers/json/tiled_map.py +++ b/pytiled_parser/parsers/json/tiled_map.py @@ -5,7 +5,7 @@ from typing import List, Union, cast from typing_extensions import TypedDict -from pytiled_parser.common_types import Size +from pytiled_parser.common_types import OrderedPair, Size from pytiled_parser.exception import UnknownFormat from pytiled_parser.parsers.json.layer import RawLayer from pytiled_parser.parsers.json.layer import parse as parse_layer @@ -44,6 +44,8 @@ RawTiledMap = TypedDict( "type": str, "version": Union[str, float], "width": int, + "parallaxoriginx": float, + "parallaxoriginy": float, }, ) RawTiledMap.__doc__ = """ @@ -185,4 +187,15 @@ def parse(file: Path) -> TiledMap: if raw_tiled_map.get("staggerindex") is not None: map_.stagger_index = raw_tiled_map["staggerindex"] + _parallax_origin_x = 0 + _parallax_origin_y = 0 + + if raw_tiled_map.get("parallaxoriginx") is not None: + _parallax_origin_x = raw_tiled_map["parallaxoriginx"] + + if raw_tiled_map.get("parallaxoriginy") is not None: + _parallax_origin_y = raw_tiled_map["parallaxoriginy"] + + map_.parallax_origin = OrderedPair(_parallax_origin_x, _parallax_origin_y) + return map_ diff --git a/pytiled_parser/parsers/tmx/tiled_map.py b/pytiled_parser/parsers/tmx/tiled_map.py index 6cf5a33..f8db461 100644 --- a/pytiled_parser/parsers/tmx/tiled_map.py +++ b/pytiled_parser/parsers/tmx/tiled_map.py @@ -2,7 +2,7 @@ import json import xml.etree.ElementTree as etree from pathlib import Path -from pytiled_parser.common_types import Size +from pytiled_parser.common_types import OrderedPair, Size from pytiled_parser.exception import UnknownFormat from pytiled_parser.parsers.json.tileset import parse as parse_json_tileset from pytiled_parser.parsers.tmx.layer import parse as parse_layer @@ -145,4 +145,15 @@ def parse(file: Path) -> TiledMap: if raw_map.attrib.get("class") is not None: map_.class_ = raw_map.attrib["class"] + _parallax_origin_x = 0 + _parallax_origin_y = 0 + + if raw_map.attrib.get("parallaxoriginx") is not None: + _parallax_origin_x = float(raw_map.attrib["parallaxoriginx"]) + + if raw_map.get("parallaxoriginy") is not None: + _parallax_origin_y = float(raw_map.attrib["parallaxoriginy"]) + + map_.parallax_origin = OrderedPair(_parallax_origin_x, _parallax_origin_y) + return map_ diff --git a/pytiled_parser/tiled_map.py b/pytiled_parser/tiled_map.py index 6171edc..a68db71 100644 --- a/pytiled_parser/tiled_map.py +++ b/pytiled_parser/tiled_map.py @@ -7,7 +7,7 @@ from typing import Dict, List, Optional import attr -from pytiled_parser.common_types import Color, Size +from pytiled_parser.common_types import Color, OrderedPair, Size from pytiled_parser.layer import Layer from pytiled_parser.properties import Properties from pytiled_parser.tileset import Tileset @@ -66,6 +66,8 @@ class TiledMap: tilesets: TilesetDict version: str + parallax_origin: OrderedPair = OrderedPair(0, 0) + map_file: Optional[Path] = None class_: Optional[str] = None background_color: Optional[Color] = None diff --git a/tests/test_data/map_tests/no_layers/expected.py b/tests/test_data/map_tests/no_layers/expected.py index 61c9622..1778c5b 100644 --- a/tests/test_data/map_tests/no_layers/expected.py +++ b/tests/test_data/map_tests/no_layers/expected.py @@ -10,10 +10,11 @@ EXPECTED = tiled_map.TiledMap( next_object_id=1, orientation="orthogonal", render_order="right-down", - tiled_version="1.6.0", + tiled_version="1.9.1", tile_size=common_types.Size(32, 32), - version="1.6", + version="1.9", background_color=common_types.Color(255, 0, 4, 255), + parallax_origin=common_types.OrderedPair(10, 15), tilesets={ 1: tileset.Tileset( columns=8, diff --git a/tests/test_data/map_tests/no_layers/map.json b/tests/test_data/map_tests/no_layers/map.json index 595a195..19f4f9d 100644 --- a/tests/test_data/map_tests/no_layers/map.json +++ b/tests/test_data/map_tests/no_layers/map.json @@ -6,6 +6,8 @@ "nextlayerid":2, "nextobjectid":1, "orientation":"orthogonal", + "parallaxoriginx":10, + "parallaxoriginy":15, "properties":[ { "name":"bool property - true", @@ -38,7 +40,7 @@ "value":"Hello, World!!" }], "renderorder":"right-down", - "tiledversion":"1.9.0", + "tiledversion":"1.9.1", "tileheight":32, "tilesets":[ { diff --git a/tests/test_data/map_tests/no_layers/map.tmx b/tests/test_data/map_tests/no_layers/map.tmx index 1ef8b7a..ed4569d 100644 --- a/tests/test_data/map_tests/no_layers/map.tmx +++ b/tests/test_data/map_tests/no_layers/map.tmx @@ -1,5 +1,5 @@ - +