recognise image layers

This commit is contained in:
Richard Jones
2020-09-23 11:24:42 +10:00
parent 5a44abd87a
commit b3c2c00346
2 changed files with 40 additions and 0 deletions

View File

@@ -420,6 +420,21 @@ class LayerGroup(Layer):
layers: Optional[List[Union["LayerGroup", Layer, ObjectLayer]]]
@attr.s(auto_attribs=True, kw_only=True)
class ImageLayer(Layer):
"""Image Layer.
An image layer displays a single image.
See: https://doc.mapeditor.org/en/stable/reference/tmx-map-format/#imagelayer
Attributes:
image: the image to display for this layer.
"""
image: Image
@attr.s(auto_attribs=True)
class TileSet:
"""Object for storing a TSX with all associated collision data.

View File

@@ -403,6 +403,29 @@ def _parse_object_layer(element: etree.Element,) -> objects.ObjectLayer:
)
def _parse_image_layer(element: etree.Element,) -> objects.ImageLayer:
"""Parse the imagelayer element given.
Args:
element: Element to be parsed.
Returns:
ImageLayer: The image layer object.
"""
id_, name, offset, opacity, properties = _parse_layer(element)
image = _parse_image_element(element.find("./image"))
return objects.ImageLayer(
id_=id_,
name=name,
offset=offset,
opacity=opacity,
properties=properties,
image=image,
)
def _parse_layer_group(element: etree.Element,) -> objects.LayerGroup:
"""Parse the objectgroup element given.
@@ -447,6 +470,8 @@ def _get_layer_parser(
return _parse_object_layer
if layer_tag == "group":
return _parse_layer_group
if layer_tag == "imagelayer":
return _parse_image_layer
return None