Files
Decked-Out-Defense/Scripts/enemy_goal.gd

37 lines
760 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()