mirror of
https://github.com/OMGeeky/pytiled_parser.git
synced 2026-02-23 15:49:52 +01:00
PEP-8 improvements related to #4, and fix for hitbox issue from last check-in
This commit is contained in:
@@ -164,7 +164,7 @@ def _parse_layer(
|
|||||||
Returns:
|
Returns:
|
||||||
FIXME
|
FIXME
|
||||||
"""
|
"""
|
||||||
id = int(layer_element.attrib["id"])
|
id_ = int(layer_element.attrib["id"])
|
||||||
|
|
||||||
name = layer_element.attrib["name"]
|
name = layer_element.attrib["name"]
|
||||||
|
|
||||||
@@ -201,7 +201,7 @@ def _parse_layer(
|
|||||||
else:
|
else:
|
||||||
properties = None
|
properties = None
|
||||||
|
|
||||||
return id, name, offset, opacity, properties
|
return id_, name, offset, opacity, properties
|
||||||
|
|
||||||
|
|
||||||
def _parse_tile_layer(element: etree.Element,) -> objects.TileLayer:
|
def _parse_tile_layer(element: etree.Element,) -> objects.TileLayer:
|
||||||
@@ -213,7 +213,7 @@ def _parse_tile_layer(element: etree.Element,) -> objects.TileLayer:
|
|||||||
Returns:
|
Returns:
|
||||||
TileLayer: The tile layer object.
|
TileLayer: The tile layer object.
|
||||||
"""
|
"""
|
||||||
id, name, offset, opacity, properties = _parse_layer(element)
|
id_, name, offset, opacity, properties = _parse_layer(element)
|
||||||
|
|
||||||
width = int(element.attrib["width"])
|
width = int(element.attrib["width"])
|
||||||
height = int(element.attrib["height"])
|
height = int(element.attrib["height"])
|
||||||
@@ -226,7 +226,7 @@ def _parse_tile_layer(element: etree.Element,) -> objects.TileLayer:
|
|||||||
raise ValueError(f"{element} has no child data element.")
|
raise ValueError(f"{element} has no child data element.")
|
||||||
|
|
||||||
return objects.TileLayer(
|
return objects.TileLayer(
|
||||||
id, name, offset, opacity, properties, size, data
|
id_, name, offset, opacity, properties, size, data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -244,12 +244,12 @@ def _parse_objects(
|
|||||||
tiled_objects: List[objects.TiledObject] = []
|
tiled_objects: List[objects.TiledObject] = []
|
||||||
|
|
||||||
for object_element in object_elements:
|
for object_element in object_elements:
|
||||||
id = int(object_element.attrib["id"])
|
id_ = int(object_element.attrib["id"])
|
||||||
location_x = float(object_element.attrib["x"])
|
location_x = float(object_element.attrib["x"])
|
||||||
location_y = float(object_element.attrib["y"])
|
location_y = float(object_element.attrib["y"])
|
||||||
location = objects.OrderedPair(location_x, location_y)
|
location = objects.OrderedPair(location_x, location_y)
|
||||||
|
|
||||||
tiled_object = objects.TiledObject(id, location)
|
tiled_object = objects.TiledObject(id_, location)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
width = float(object_element.attrib["width"])
|
width = float(object_element.attrib["width"])
|
||||||
@@ -308,22 +308,24 @@ def _parse_object_layer(element: etree.Element,) -> objects.ObjectLayer:
|
|||||||
Returns:
|
Returns:
|
||||||
ObjectLayer: The object layer object.
|
ObjectLayer: The object layer object.
|
||||||
"""
|
"""
|
||||||
id, name, offset, opacity, properties = _parse_layer(element)
|
id_, name, offset, opacity, properties = _parse_layer(element)
|
||||||
|
|
||||||
tiled_objects = _parse_objects(element.findall("./object"))
|
tiled_objects = _parse_objects(element.findall("./object"))
|
||||||
|
|
||||||
|
color = None
|
||||||
try:
|
try:
|
||||||
color = element.attrib["color"]
|
color = element.attrib["color"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
draw_order = None
|
||||||
try:
|
try:
|
||||||
draw_order = element.attrib["draworder"]
|
draw_order = element.attrib["draworder"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return objects.ObjectLayer(
|
return objects.ObjectLayer(
|
||||||
id,
|
id_,
|
||||||
name,
|
name,
|
||||||
offset,
|
offset,
|
||||||
opacity,
|
opacity,
|
||||||
@@ -348,11 +350,11 @@ def _parse_layer_group(element: etree.Element,) -> objects.LayerGroup:
|
|||||||
Returns:
|
Returns:
|
||||||
LayerGroup: The layer group object.
|
LayerGroup: The layer group object.
|
||||||
"""
|
"""
|
||||||
id, name, offset, opacity, properties = _parse_layer(element)
|
id_, name, offset, opacity, properties = _parse_layer(element)
|
||||||
|
|
||||||
layers = _get_layers(element)
|
layers = _get_layers(element)
|
||||||
|
|
||||||
return objects.LayerGroup(id, name, offset, opacity, properties, layers)
|
return objects.LayerGroup(id_, name, offset, opacity, properties, layers)
|
||||||
|
|
||||||
|
|
||||||
def _get_layer_parser(
|
def _get_layer_parser(
|
||||||
@@ -417,7 +419,7 @@ def _parse_external_tile_set(
|
|||||||
return _parse_tile_set(tile_set_tree)
|
return _parse_tile_set(tile_set_tree)
|
||||||
|
|
||||||
|
|
||||||
def _parse_points(point_string: str) ->List[objects.OrderedPair]:
|
def _parse_points(point_string: str) -> List[objects.OrderedPair]:
|
||||||
str_pairs = point_string.split(" ")
|
str_pairs = point_string.split(" ")
|
||||||
|
|
||||||
points = []
|
points = []
|
||||||
@@ -433,11 +435,13 @@ def _parse_points(point_string: str) ->List[objects.OrderedPair]:
|
|||||||
def _parse_hitboxes(element: etree.Element) -> List[objects.TiledObject]:
|
def _parse_hitboxes(element: etree.Element) -> List[objects.TiledObject]:
|
||||||
"""Parses all hitboxes for a given tile."""
|
"""Parses all hitboxes for a given tile."""
|
||||||
hitbox_elements = element.findall("./object")
|
hitbox_elements = element.findall("./object")
|
||||||
|
|
||||||
|
hitboxes = []
|
||||||
for hitbox_element in hitbox_elements:
|
for hitbox_element in hitbox_elements:
|
||||||
|
|
||||||
id = None
|
id_ = None
|
||||||
if "id" in hitbox_element.attrib:
|
if "id" in hitbox_element.attrib:
|
||||||
id = hitbox_element.attrib["id"]
|
id_ = hitbox_element.attrib["id"]
|
||||||
|
|
||||||
x = None
|
x = None
|
||||||
if "x" in hitbox_element.attrib:
|
if "x" in hitbox_element.attrib:
|
||||||
@@ -474,12 +478,10 @@ def _parse_hitboxes(element: etree.Element) -> List[objects.TiledObject]:
|
|||||||
hitbox_type = "Polyline"
|
hitbox_type = "Polyline"
|
||||||
points = _parse_points(child[0].attrib["points"])
|
points = _parse_points(child[0].attrib["points"])
|
||||||
|
|
||||||
|
hitbox = objects.Hitbox(id_, x, y, width, height, hitbox_type, points)
|
||||||
|
hitboxes.append(hitbox)
|
||||||
|
|
||||||
hitbox = objects.Hitbox(id, x, y, width, height, hitbox_type, points)
|
return hitboxes
|
||||||
|
|
||||||
print(hitbox)
|
|
||||||
|
|
||||||
return _parse_objects(element.findall("./object"))
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_tiles(
|
def _parse_tiles(
|
||||||
@@ -488,7 +490,7 @@ def _parse_tiles(
|
|||||||
tiles: Dict[int, objects.Tile] = {}
|
tiles: Dict[int, objects.Tile] = {}
|
||||||
for tile_element in tile_element_list:
|
for tile_element in tile_element_list:
|
||||||
# id is not optional
|
# id is not optional
|
||||||
id = int(tile_element.attrib["id"])
|
id_ = int(tile_element.attrib["id"])
|
||||||
|
|
||||||
# optional attributes
|
# optional attributes
|
||||||
tile_type = None
|
tile_type = None
|
||||||
@@ -504,7 +506,7 @@ def _parse_tiles(
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
# below is an attempt to explain how terrains are handled.
|
# below is an attempt to explain how terrains are handled.
|
||||||
#'terrain' attribute is a comma seperated list of 4 values,
|
# 'terrain' attribute is a comma seperated list of 4 values,
|
||||||
# each is either an integer or blank
|
# each is either an integer or blank
|
||||||
|
|
||||||
# convert to list of values
|
# convert to list of values
|
||||||
@@ -525,9 +527,9 @@ def _parse_tiles(
|
|||||||
if tile_properties_element:
|
if tile_properties_element:
|
||||||
properties = []
|
properties = []
|
||||||
property_list = tile_properties_element.findall("./property")
|
property_list = tile_properties_element.findall("./property")
|
||||||
for property in property_list:
|
for property_ in property_list:
|
||||||
name = property.attrib["name"]
|
name = property_.attrib["name"]
|
||||||
value = property.attrib["value"]
|
value = property_.attrib["value"]
|
||||||
obj = objects.Property(name, value)
|
obj = objects.Property(name, value)
|
||||||
properties.append(obj)
|
properties.append(obj)
|
||||||
|
|
||||||
@@ -556,8 +558,8 @@ def _parse_tiles(
|
|||||||
if tile_hitboxes_element is not None:
|
if tile_hitboxes_element is not None:
|
||||||
hitboxes = _parse_hitboxes(tile_hitboxes_element)
|
hitboxes = _parse_hitboxes(tile_hitboxes_element)
|
||||||
|
|
||||||
tiles[id] = objects.Tile(
|
tiles[id_] = objects.Tile(
|
||||||
id, tile_type, tile_terrain, animation, tile_image, hitboxes, properties
|
id_, tile_type, tile_terrain, animation, tile_image, hitboxes, properties
|
||||||
)
|
)
|
||||||
|
|
||||||
return tiles
|
return tiles
|
||||||
|
|||||||
Reference in New Issue
Block a user