Add support for parallax origin in maps

This commit is contained in:
Darren Eberly
2022-08-13 00:35:43 -04:00
parent 83ee2c420a
commit 9a92a32661
6 changed files with 36 additions and 7 deletions

View File

@@ -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_

View File

@@ -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_

View File

@@ -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

View File

@@ -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,

View File

@@ -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":[
{

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.5" tiledversion="1.7.0" orientation="orthogonal" renderorder="right-down" compressionlevel="0" width="8" height="6" tilewidth="32" tileheight="32" infinite="0" backgroundcolor="#ff0004" nextlayerid="2" nextobjectid="1">
<map version="1.9" tiledversion="1.9.1" orientation="orthogonal" renderorder="right-down" compressionlevel="0" width="8" height="6" tilewidth="32" tileheight="32" infinite="0" parallaxoriginx="10" parallaxoriginy="15" backgroundcolor="#ff0004" nextlayerid="2" nextobjectid="1">
<properties>
<property name="bool property - true" type="bool" value="true"/>
<property name="color property" type="color" value="#ff49fcff"/>