The_Dark_Side_of_Earth/vines_petals/bud.gd

28 lines
885 B
GDScript3
Raw Permalink Normal View History

2025-10-21 17:54:43 +02:00
class_name Bud extends GridNode
2025-10-03 16:36:28 +02:00
signal opened
2025-10-03 17:09:51 +02:00
var img_path
@export var vine : Vine
# Triggers when a bud is hit. Spreads the vine, then removes the bud
func _on_opened():
$EnemyHurtbox.monitorable = false
$EnemyHurtbox.monitoring = false
$AnimatedSprite2D.play("open")
2025-10-03 16:36:28 +02:00
opened.emit()
spread()
await $AnimatedSprite2D.animation_finished
for child in get_children():
queue_free()
2025-10-03 16:36:28 +02:00
# Spread in all directions where the given vine is not yet present
2025-10-03 16:36:28 +02:00
func spread():
for dir in [Vector2.UP, Vector2.DOWN, Vector2.RIGHT, Vector2.LEFT]:
if not vine.vine_locations.has(Global.vec_mod(location + dir, Grid.num_collumns, true)):
2025-10-03 16:36:28 +02:00
grow_to_next_bud(dir)
# Grow a vine
2025-10-03 16:36:28 +02:00
func grow_to_next_bud(dir):
var target_location = Global.vec_mod(location + dir, Grid.num_collumns, true)
var target = GridNode.random_at(target_location)
await vine.grow_vine_sequence(self, target, true, false)