Removed extraneous enemy_died signal from spawning; used

get_nodes_in_group for enemy_count
This commit is contained in:
Henry 2025-12-17 19:17:46 +00:00
parent 485f03d702
commit 7ef6076eda
5 changed files with 21 additions and 10 deletions

View file

@ -36,7 +36,7 @@ func _process(delta):
func explode(): func explode():
print_debug("Enemy died!") print_debug("Enemy explode!")
speed = 0 speed = 0
$AnimationPlayer.play("explode") $AnimationPlayer.play("explode")
set_deferred("monitoring", false) set_deferred("monitoring", false)

View file

@ -4,6 +4,6 @@ extends Node
signal shield_changed(max_value: int, old_value: int, new_value: int) signal shield_changed(max_value: int, old_value: int, new_value: int)
signal player_died() signal player_died()
signal enemy_died() signal enemy_died(value: int)
@warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations @warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations

21
main.gd
View file

@ -3,6 +3,7 @@ extends Node2D
var enemy = preload("res://enemy.tscn") var enemy = preload("res://enemy.tscn")
var score = 0 var score = 0
var playing = false var playing = false
var enemy_count: int = 0
@onready var start_button = $CanvasLayer/CenterContainer/Start @onready var start_button = $CanvasLayer/CenterContainer/Start
@onready var game_over = $CanvasLayer/CenterContainer/GameOver @onready var game_over = $CanvasLayer/CenterContainer/GameOver
@ -15,20 +16,25 @@ func _ready():
# spawn_enemies() # spawn_enemies()
func spawn_enemies(): func spawn_enemies():
for x in range(9): for x in range(9):
for y in range(3): for y in range(3):
var e = enemy.instantiate() var e = enemy.instantiate()
var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16) var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16)
add_child(e) add_child(e)
e.start(pos) e.start(pos)
EventBus.enemy_died.emit() enemy_count = get_tree().get_nodes_in_group("enemies").size()
print(enemy_count)
func _on_enemy_died(value: int):
func _on_enemy_died(value):
print_debug("Enemy died!")
score += value score += value
enemy_count -= 1
$CanvasLayer/UI.update_score(score) $CanvasLayer/UI.update_score(score)
print_debug(enemy_count)
if enemy_count == 0:
print("All enemies defeated!")
win_game()
func _on_player_died(): func _on_player_died():
playing = false playing = false
@ -48,3 +54,10 @@ func new_game():
func _on_start_pressed(): func _on_start_pressed():
start_button.hide() start_button.hide()
new_game() new_game()
func win_game():
playing = false
game_over.show()
await get_tree().create_timer(2).timeout
game_over.hide()
start_button.show()

View file

@ -77,7 +77,7 @@ func _on_gun_cooldown_timeout() -> void:
func _on_area_entered(area): func _on_area_entered(area):
if area.is_in_group("enemies"): if area.is_in_group("enemies"):
area.explode() area.explode()
shield -= max_shield / 2 shield -= int(max_shield / 2)
damage_taken.emit() damage_taken.emit()
if area.is_in_group("enemy_bullets"): if area.is_in_group("enemy_bullets"):
damage_taken.emit() damage_taken.emit()

2
ui.gd
View file

@ -24,8 +24,6 @@ func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void:
_on_fx_shield_ui() _on_fx_shield_ui()
func _on_fx_shield_ui(): func _on_fx_shield_ui():
shader_active = true shader_active = true
shield_bar.material.set_shader_parameter("toggle", 1.0) shield_bar.material.set_shader_parameter("toggle", 1.0)