aboutsummaryrefslogtreecommitdiff
path: root/client/map/tiles
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-12-12 21:34:59 +0100
committertpart <tpart120@proton.me>2025-12-12 21:35:33 +0100
commit2f9834bee210168de6f76dcd30161e5b48dfaa11 (patch)
treee61cf5e98e8333c091483303d6ef120dde08c00f /client/map/tiles
parent79642553215b48fee2c4f3eaaa6b983bad06aaa4 (diff)
downloadhurrycurry-2f9834bee210168de6f76dcd30161e5b48dfaa11.tar
hurrycurry-2f9834bee210168de6f76dcd30161e5b48dfaa11.tar.bz2
hurrycurry-2f9834bee210168de6f76dcd30161e5b48dfaa11.tar.zst
Add tree variant support
Diffstat (limited to 'client/map/tiles')
-rw-r--r--client/map/tiles/exterior_tree.gd42
1 files changed, 30 insertions, 12 deletions
diff --git a/client/map/tiles/exterior_tree.gd b/client/map/tiles/exterior_tree.gd
index fe9eeaf8..7db57cd7 100644
--- a/client/map/tiles/exterior_tree.gd
+++ b/client/map/tiles/exterior_tree.gd
@@ -23,23 +23,41 @@ func _init(ctx: TileFactory.TileCC):
super(ctx)
var random = RandomNumberGenerator.new()
random.seed = str(ctx.position).hash()
- var tree: int = random.randi_range(1,5)
- var trunk: Mesh = load("res://map/tiles/tree/trunk_%d.res" % tree)
- var leaves: Mesh = load("res://map/tiles/tree/leaves_%d_%s.res" % [
- tree,
- "lq" if Settings.read("graphics.lq_trees") else "hq"
- ])
+ var tree_type: int = random.randi_range(1,5)
+ var no_leaves := false
+
+ if ctx.tile_name.variant != null:
+ var variant: String = ctx.tile_name.variant
+ if variant == "no_leaves":
+ no_leaves = true
+ else:
+ if variant.is_valid_int():
+ var variant_int := int(variant)
+ if variant_int >= 1 and variant_int <= 5:
+ tree_type = variant_int
+ else:
+ push_error("Tree variant \"%d\" is out of bounds (expected element of [1..5])" % variant_int)
+ push_error("Tree variant \"%s\" not recognized" % variant)
+
+ var tree_node: Node3D = Node3D.new()
+
+ if not no_leaves:
+ var leaves: Mesh = load("res://map/tiles/tree/leaves_%d_%s.res" % [
+ tree_type,
+ "lq" if Settings.read("graphics.lq_trees") else "hq"
+ ])
+ var leaves_instance: MeshInstance3D = MeshInstance3D.new()
+ leaves_instance.mesh = leaves
+ leaves_instance.scale = SCALE
+ leaves_instance.rotation = ROT
+ tree_node.add_child(leaves_instance)
+
+ var trunk: Mesh = load("res://map/tiles/tree/trunk_%d.res" % tree_type)
var trunk_instance: MeshInstance3D = MeshInstance3D.new()
trunk_instance.mesh = trunk
trunk_instance.scale = SCALE
trunk_instance.rotation = ROT
- var leaves_instance: MeshInstance3D = MeshInstance3D.new()
- leaves_instance.mesh = leaves
- leaves_instance.scale = SCALE
- leaves_instance.rotation = ROT
- var tree_node: Node3D = Node3D.new()
tree_node.add_child(trunk_instance)
- tree_node.add_child(leaves_instance)
tree_node.name = "Tree"
base.add_child(tree_node)