From 290bdb70ea7fbe01efa78bfeaad0ae57c13bf0fd Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 9 Jun 2020 21:36:34 -0400 Subject: [PATCH] feat(layer): Implemented LayerGroup casting --- pytiled_parser/layer.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pytiled_parser/layer.py b/pytiled_parser/layer.py index b4f9f1d..e49ee80 100644 --- a/pytiled_parser/layer.py +++ b/pytiled_parser/layer.py @@ -142,7 +142,7 @@ class LayerGroup(Layer): Layers: Layers in group. """ - layers: Optional[List[Union["LayerGroup", ImageLayer, ObjectLayer, TileLayer]]] + layers: Optional[List[Layer]] class RawChunk(TypedDict): @@ -169,7 +169,7 @@ class RawLayer(TypedDict): image: str layers: List[Any] name: str - objects: List[RawTiledObject] + objects: List[tiled_object.RawTiledObject] offsetx: float offsety: float opacity: float @@ -297,7 +297,21 @@ def _cast_image_layer(raw_layer: RawLayer) -> ImageLayer: def _cast_group_layer(raw_layer: RawLayer) -> LayerGroup: - pass + """ Cast the raw_layer to a LayerGroup. + + Args: + raw_layer: RawLayer to be casted to a LayerGroup + + Returns: + LayerGroup: The LayerGroup created from raw_layer + """ + + layers = [] + + for layer in raw_layer["layers"]: + layers.append(cast(layer)) + + return LayerGroup(layers=layers, **_get_common_attributes(raw_layer).__dict__) def _get_caster(type_: str) -> Callable[[RawLayer], Layer]: