From 2d6e9ac0d06eb87517e8db753ceb966bb9e74c7d Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 9 Jun 2020 21:32:07 -0400 Subject: [PATCH] feat(layer): Implemented ObjectLayer casting --- pytiled_parser/layer.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/pytiled_parser/layer.py b/pytiled_parser/layer.py index 617e803..2ead0b5 100644 --- a/pytiled_parser/layer.py +++ b/pytiled_parser/layer.py @@ -7,8 +7,8 @@ import attr from typing_extensions import TypedDict from . import properties as properties_ +from . import tiled_object from .common_types import Color, OrderedPair, Size -from .tiled_object import RawTiledObject, TiledObject @attr.s(auto_attribs=True, kw_only=True) @@ -111,7 +111,7 @@ class ObjectLayer(Layer): for more info. """ - tiled_objects: List[TiledObject] + tiled_objects: List[tiled_object.TiledObject] draw_order: Optional[str] = "topdown" @@ -252,6 +252,7 @@ def _cast_tile_layer(raw_layer: RawLayer) -> TileLayer: Returns: TileLayer: The TileLayer created from raw_layer """ + tile_layer = TileLayer(**_get_common_attributes(raw_layer).__dict__) tile_layer.encoding = raw_layer["encoding"] @@ -271,7 +272,24 @@ def _cast_tile_layer(raw_layer: RawLayer) -> TileLayer: def _cast_object_layer(raw_layer: RawLayer) -> ObjectLayer: - pass + """ Cast the raw_layer to an ObjectLayer. + + Args: + raw_layer: RawLayer to be casted to an ObjectLayer + + Returns: + ObjectLayer: The ObjectLayer created from raw_layer + """ + + tiled_objects = [] + for tiled_object_ in raw_layer["objects"]: + tiled_objects.append(tiled_object.cast(tiled_object_)) + + return ObjectLayer( + tiled_objects=tiled_objects, + draw_order=raw_layer["draworder"], + **_get_common_attributes(raw_layer).__dict__ + ) def _cast_image_layer(raw_layer: RawLayer) -> ImageLayer: