Troubleshooting player_died signal.

This commit is contained in:
Henry 2025-12-16 23:19:03 +00:00
parent afc5c68569
commit a73fb28552
7 changed files with 48 additions and 56 deletions

View file

@ -1,7 +1,5 @@
extends Area2D extends Area2D
signal died
var bullet_scene = preload("res://enemy_bullet.tscn") var bullet_scene = preload("res://enemy_bullet.tscn")
var start_pos = Vector2.ZERO var start_pos = Vector2.ZERO
var speed = 0 var speed = 0
@ -41,6 +39,6 @@ func explode():
speed = 0 speed = 0
$AnimationPlayer.play("explode") $AnimationPlayer.play("explode")
set_deferred("monitoring", false) set_deferred("monitoring", false)
died.emit(5) EventBus.enemy_died.emit(5)
await $AnimationPlayer.animation_finished await $AnimationPlayer.animation_finished
queue_free() queue_free()

View file

@ -3,5 +3,7 @@ extends Node
@warning_ignore_start("unused_signal") # since otherwise Godot will throw a warning that the signal is unused in current scope @warning_ignore_start("unused_signal") # since otherwise Godot will throw a warning that the signal is unused in current scope
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 enemy_died()
@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

View file

@ -2,6 +2,21 @@
[ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="1_q7epf"] [ext_resource type="Texture2D" uid="uid://h04wm5a27u0" path="res://Mini Pixel Pack 3/Effects/Explosion (16 x 16).png" id="1_q7epf"]
[sub_resource type="Animation" id="Animation_j4sxf"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="Animation" id="Animation_vxas0"] [sub_resource type="Animation" id="Animation_vxas0"]
resource_name = "explosion-one-shot" resource_name = "explosion-one-shot"
length = 0.5 length = 0.5
@ -19,21 +34,6 @@ tracks/0/keys = {
"values": [0, 1, 3, 4, 5] "values": [0, 1, 3, 4, 5]
} }
[sub_resource type="Animation" id="Animation_j4sxf"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:frame")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [0]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_m5xho"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_m5xho"]
_data = { _data = {
&"RESET": SubResource("Animation_j4sxf"), &"RESET": SubResource("Animation_j4sxf"),
@ -48,4 +48,4 @@ hframes = 6
libraries = { libraries = {
&"": SubResource("AnimationLibrary_m5xho") &"": SubResource("AnimationLibrary_m5xho")
} }
autoplay = "explosion-one-shot" autoplay = "RESET"

26
main.gd
View file

@ -1,22 +1,17 @@
extends Node2D extends Node2D
var enemy = preload("res://enemy.tscn")
var score = 0
var playing = false
@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
var enemy = preload("res://enemy.tscn")
var score = 0
func _ready(): func _ready():
start_button.show()
game_over.hide() game_over.hide()
start_button.show()
# spawn_enemies() # spawn_enemies()
func new_game():
score = 0
$CanvasLayer/UI.update_score(score)
$Player.start()
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):
@ -24,19 +19,28 @@ func spawn_enemies():
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)
e.died.connect(_on_enemy_died) EventBus.enemy_died.emit()
func _on_enemy_died(value): func _on_enemy_died(value):
score += value score += value
$CanvasLayer/UI.update_score(score) $CanvasLayer/UI.update_score(score)
func _on_player_died(): func _on_player_died():
print("game over")
playing = false
get_tree().call_group("enemies", "queue_free") get_tree().call_group("enemies", "queue_free")
game_over.show() game_over.show()
await get_tree().create_timer(2).timeout await get_tree().create_timer(2).timeout
game_over.hide() game_over.hide()
start_button.show() start_button.show()
func new_game():
score = 0
$CanvasLayer/UI.update_score(score)
$Player.start()
spawn_enemies()
playing = true
func _on_start_pressed(): func _on_start_pressed():
start_button.hide() start_button.hide()
new_game() new_game()

View file

@ -60,10 +60,7 @@ region_enabled = true
region_rect = Rect2(0, 0, 240, 320) region_rect = Rect2(0, 0, 240, 320)
[node name="Player" parent="." instance=ExtResource("2_0xm2m")] [node name="Player" parent="." instance=ExtResource("2_0xm2m")]
position = Vector2(123, 270) position = Vector2(123, 272)
max_shield = null
speed = null
cooldown = null
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = { libraries = {

View file

@ -1,6 +1,6 @@
extends Area2D extends Area2D
signal died
signal damage_taken signal damage_taken
# signal shield_damage # signal shield_damage
# signal shield_ui # signal shield_ui
@ -62,14 +62,14 @@ func set_shield(value: int):
var old_value: int = shield var old_value: int = shield
shield = min(max_shield, value) shield = min(max_shield, value)
EventBus.shield_changed.emit(max_shield, old_value, shield) EventBus.shield_changed.emit(max_shield, old_value, shield)
# shield_damage.emit() # Don't need this anymore since switching to event_bus.gd print("Shield set to:", shield)
if shield <= 0: if shield <= 0:
set_process(false) set_process(false)
$Ship.hide() $Ship.hide()
$Explosion.show() $Explosion.show()
$Explosion/AnimationPlayer.play("explosion-one-shot") $Explosion/AnimationPlayer.play("explosion-one-shot")
await $Explosion/AnimationPlayer.animation_finished await $Explosion/AnimationPlayer.animation_finished
died.emit() EventBus.player_died.emit()
func _on_gun_cooldown_timeout() -> void: func _on_gun_cooldown_timeout() -> void:
can_shoot = true can_shoot = true

19
ui.gd
View file

@ -17,25 +17,16 @@ func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void:
shield_bar.max_value = max_value shield_bar.max_value = max_value
shield_bar.value = new_value shield_bar.value = new_value
var shield_depletion = int(old_value - new_value)
print("update_shield"," ","Current ",(new_value), " ", "(Max ",(max_value),")"," ","Old Value:"," ",(old_value)) print("Shield Depletion:", old_value, "-", new_value, " = ", shield_depletion)
var tween = create_tween()
if new_value >= max_value: tween.tween_property(shield_bar, "value", new_value - shield_depletion, .20).set_trans(Tween.TRANS_LINEAR)
print("No need to tween!") _on_shield_ui()
else:
print("I should be tweening!")
var shield_depletion = int(old_value - new_value)
print("Shield Depletion:", old_value, "-", new_value, " = ", shield_depletion)
var tween = create_tween()
tween.tween_property(shield_bar, "value", new_value - shield_depletion, .20).set_trans(Tween.TRANS_LINEAR)
_on_shield_ui()
func _on_shield_ui(): func _on_shield_ui():
print("SHIELD FX!")
shader_active = true shader_active = true
shield_bar.material.set_shader_parameter("toggle", 1.0) shield_bar.material.set_shader_parameter("toggle", 1.0)
await get_tree().create_timer(1).timeout await get_tree().create_timer(1).timeout