diff options
| -rw-r--r-- | client/map/tiles/exterior_tree.gd | 42 |
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) |