Files
Decked-Out-Defense/Scripts/enemy_goal.gd
2026-02-11 08:18:46 +11:00

37 lines
763 B
GDScript

class_name EnemyGoal
extends Node3D
signal goal_cleared()
signal goal_occupied()
@export var audio_player: AudioStreamPlayer3D
var enemies_inside: int
func _on_area_3d_body_entered(body: Node3D) -> void:
if body is EnemyController:
body.goal_entered()
audio_player.play()
func enemy_entered_shield_range(body: Node3D) -> void:
if body is EnemyController:
if enemies_inside == 0:
goal_occupied.emit()
enemies_inside += 1
body.died.connect(enemy_died)
body.reached_goal.connect(enemy_reached_goal)
func enemy_died(_enemy: Enemy) -> void:
enemies_inside -= 1
if enemies_inside == 0:
goal_cleared.emit()
func enemy_reached_goal(_enemy: Enemy, _penalty: int) -> void:
enemies_inside -= 1
if enemies_inside == 0:
goal_cleared.emit()