diff --git a/pytiled_parser/tiled_object.py b/pytiled_parser/tiled_object.py index 03dc1a6..2cf2192 100644 --- a/pytiled_parser/tiled_object.py +++ b/pytiled_parser/tiled_object.py @@ -6,6 +6,7 @@ import attr from typing_extensions import TypedDict from .properties import Properties, RawProperties +from .common_types import Color, OrderedPair, Size from .template import Template @@ -125,12 +126,12 @@ class Text(TiledObject): font_family: str = "sans-serif" font_size: int = 16 wrap: bool = False - color: str = "#000000" + color: Color = "#000000" bold: bool = False italic: bool = False underline: bool = False strike_out: bool = False - kerning: bool = False + kerning: bool = True horizontal_align: str = "left" vertical_align: str = "top" @@ -148,9 +149,6 @@ class Tile(TiledObject): gid: int -RawProperties = Dict[str, Union[str, float, bool]] - - class RawTiledObject(TypedDict): """ The keys and their types that appear in a Tiled JSON Object.""" @@ -170,6 +168,8 @@ class RawTiledObject(TypedDict): ellipse: bool point: bool polygon: List[Dict[str, float]] + polyline: List[Dict[str, float]] + text: Dict[str, Union[float, str]] RawTiledObjects = List[RawTiledObject] @@ -267,6 +267,14 @@ def _cast_point(raw_tiled_object: RawTiledObject) -> Point: def _cast_tile(raw_tiled_object: RawTiledObject) -> Tile: + """ Cast the raw_tiled_object to a Tile object. + + Args: + raw_tiled_object: Raw Tiled object to be casted to a Tile + + Returns: + Tile: The Tile object created from the raw_tiled_object + """ gid = raw_tiled_object["gid"] return Tile(gid=gid, **_get_common_attributes(raw_tiled_object).__dict__) diff --git a/tests/test_tiled_object.py b/tests/test_tiled_object.py index a36636b..dfcf229 100644 --- a/tests/test_tiled_object.py +++ b/tests/test_tiled_object.py @@ -1051,6 +1051,47 @@ TEXTS = [ coordinates=common_types.OrderedPair(96.3338140843469, 130.620495623508), ), ), + ( + """ + { + "height":19, + "id":31, + "name":"name: text - font options", + "rotation":0, + "text": + { + "bold":true, + "italic":true, + "kerning":false, + "strikeout":true, + "text":"Hello World", + "underline":true, + "wrap":true + }, + "type":"text", + "visible":true, + "width":92.375, + "x":33, + "y":22 + } + """, + tiled_object.Text( + id=31, + name="name: text - font options", + rotation=0, + bold=True, + italic=True, + kerning=False, + strike_out=True, + text="Hello World", + underline=True, + wrap=True, + type="text", + visible=True, + size=common_types.Size(92.375, 19), + coordinates=common_types.OrderedPair(33, 22), + ), + ), ] OBJECTS = ELLIPSES + RECTANGLES + POINTS + TILES + POLYGONS + POLYLINES + TEXTS