added keep shield ui onscreen option
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user