Layer fix for TMX parser

This commit is contained in:
Darren Eberly
2021-12-19 22:11:18 -05:00
parent 5ce8bbafcb
commit 5763e8e497

View File

@@ -121,7 +121,7 @@ def _parse_chunk(
) )
else: else:
data = _convert_raw_tile_layer_data( data = _convert_raw_tile_layer_data(
[int(v.strip) for v in raw_chunk.text], # type: ignore [int(v.strip()) for v in raw_chunk.text.split(",")], # type: ignore
int(raw_chunk.attrib["width"]), int(raw_chunk.attrib["width"]),
) )
@@ -277,23 +277,20 @@ def _parse_image_layer(raw_layer: etree.Element) -> ImageLayer:
ImageLayer: The ImageLayer created from raw_layer ImageLayer: The ImageLayer created from raw_layer
""" """
image_element = raw_layer.find("./image") image_element = raw_layer.find("./image")
if image_element: if image_element is not None:
source = Path(image_element.attrib["source"]) source = Path(image_element.attrib["source"])
width = int(image_element.attrib["width"])
height = int(image_element.attrib["height"])
transparent_color = None transparent_color = None
if image_element.attrib.get("trans") is not None: if image_element.attrib.get("trans") is not None:
transparent_color = parse_color(image_element.attrib["trans"]) transparent_color = parse_color(image_element.attrib["trans"])
common = _parse_common(raw_layer).__dict__ image_layer = ImageLayer(
del common["size"]
return ImageLayer(
image=source, image=source,
size=Size(width, height),
transparent_color=transparent_color, transparent_color=transparent_color,
**_parse_common(raw_layer).__dict__, **_parse_common(raw_layer).__dict__,
) )
print(image_layer.size)
return image_layer
raise RuntimeError("Tried to parse an image layer that doesn't have an image!") raise RuntimeError("Tried to parse an image layer that doesn't have an image!")
@@ -309,11 +306,24 @@ def _parse_group_layer(
Returns: Returns:
LayerGroup: The LayerGroup created from raw_layer LayerGroup: The LayerGroup created from raw_layer
""" """
layers = [] layers: List[Layer] = []
for layer in raw_layer.findall("./layer"):
layers.append(_parse_tile_layer(layer))
for layer in raw_layer.iter(): for layer in raw_layer.findall("./objectgroup"):
if layer.tag in ["layer", "objectgroup", "imagelayer", "group"]: layers.append(_parse_object_layer(layer, parent_dir))
layers.append(parse(layer, parent_dir=parent_dir))
for layer in raw_layer.findall("./imagelayer"):
layers.append(_parse_image_layer(layer))
for layer in raw_layer.findall("./group"):
layers.append(_parse_group_layer(layer, parent_dir))
# layers = []
# layers = [
# parse(child_layer, parent_dir=parent_dir)
# for child_layer in raw_layer.iter()
# if child_layer.tag in ["layer", "objectgroup", "imagelayer", "group"]
# ]
return LayerGroup(layers=layers, **_parse_common(raw_layer).__dict__) return LayerGroup(layers=layers, **_parse_common(raw_layer).__dict__)