aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-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)