32 lines
582 B
GDScript
32 lines
582 B
GDScript
extends Node2D
|
|
|
|
signal liberated
|
|
|
|
@export var n_plant_needed: int
|
|
|
|
var is_liberated := false
|
|
var current_plants := 0
|
|
|
|
func _on_area_2d_area_entered(area: Area2D) -> void:
|
|
var plant = area.get_parent()
|
|
if plant is Plant and not liberated:
|
|
plant.grown.connect(tracked_plant_grew)
|
|
plant.died.connect()
|
|
|
|
func tracked_plant_grew():
|
|
if liberated:
|
|
return
|
|
current_plants += 1
|
|
if current_plants == n_plant_needed:
|
|
liberate()
|
|
|
|
func tracked_plant_died():
|
|
if liberated:
|
|
return
|
|
current_plants -= 1
|
|
|
|
func liberate():
|
|
is_liberated = true
|
|
print("Liberated !!")
|
|
liberated.emit()
|