added keep shield ui onscreen option

This commit is contained in:
2026-02-10 19:56:01 +11:00
parent 1f91e0aef7
commit bb7e563e77
7 changed files with 77 additions and 9 deletions

View File

@@ -1,10 +1,36 @@
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()