From a73fb28552a011c731099e86e29f867b92588dbe Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 16 Dec 2025 23:19:03 +0000 Subject: [PATCH] Troubleshooting player_died signal. --- enemy.gd | 4 +--- event_bus.gd | 2 ++ explosion.tscn | 32 ++++++++++++++++---------------- main.gd | 26 +++++++++++++++----------- main.tscn | 5 +---- player.gd | 16 ++++++++-------- ui.gd | 19 +++++-------------- 7 files changed, 48 insertions(+), 56 deletions(-) diff --git a/enemy.gd b/enemy.gd index ec0f53f..06a682b 100644 --- a/enemy.gd +++ b/enemy.gd @@ -1,7 +1,5 @@ extends Area2D -signal died - var bullet_scene = preload("res://enemy_bullet.tscn") var start_pos = Vector2.ZERO var speed = 0 @@ -41,6 +39,6 @@ func explode(): speed = 0 $AnimationPlayer.play("explode") set_deferred("monitoring", false) - died.emit(5) + EventBus.enemy_died.emit(5) await $AnimationPlayer.animation_finished queue_free() diff --git a/event_bus.gd b/event_bus.gd index d860734..d2b4464 100644 --- a/event_bus.gd +++ b/event_bus.gd @@ -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 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 diff --git a/explosion.tscn b/explosion.tscn index 7aa41d2..c917f03 100644 --- a/explosion.tscn +++ b/explosion.tscn @@ -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"] +[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"] resource_name = "explosion-one-shot" length = 0.5 @@ -19,21 +34,6 @@ tracks/0/keys = { "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"] _data = { &"RESET": SubResource("Animation_j4sxf"), @@ -48,4 +48,4 @@ hframes = 6 libraries = { &"": SubResource("AnimationLibrary_m5xho") } -autoplay = "explosion-one-shot" +autoplay = "RESET" diff --git a/main.gd b/main.gd index 21a74fb..6c64fbb 100644 --- a/main.gd +++ b/main.gd @@ -1,22 +1,17 @@ extends Node2D +var enemy = preload("res://enemy.tscn") +var score = 0 +var playing = false + @onready var start_button = $CanvasLayer/CenterContainer/Start @onready var game_over = $CanvasLayer/CenterContainer/GameOver -var enemy = preload("res://enemy.tscn") -var score = 0 - func _ready(): - start_button.show() game_over.hide() + start_button.show() # spawn_enemies() -func new_game(): - score = 0 - $CanvasLayer/UI.update_score(score) - $Player.start() - spawn_enemies() - func spawn_enemies(): for x in range(9): for y in range(3): @@ -24,19 +19,28 @@ func spawn_enemies(): var pos = Vector2(x * (16 + 8) + 24, 16 * 4 + y * 16) add_child(e) e.start(pos) - e.died.connect(_on_enemy_died) + EventBus.enemy_died.emit() func _on_enemy_died(value): score += value $CanvasLayer/UI.update_score(score) func _on_player_died(): + print("game over") + playing = false get_tree().call_group("enemies", "queue_free") game_over.show() await get_tree().create_timer(2).timeout game_over.hide() start_button.show() +func new_game(): + score = 0 + $CanvasLayer/UI.update_score(score) + $Player.start() + spawn_enemies() + playing = true + func _on_start_pressed(): start_button.hide() new_game() diff --git a/main.tscn b/main.tscn index 3a9c041..b4b9795 100644 --- a/main.tscn +++ b/main.tscn @@ -60,10 +60,7 @@ region_enabled = true region_rect = Rect2(0, 0, 240, 320) [node name="Player" parent="." instance=ExtResource("2_0xm2m")] -position = Vector2(123, 270) -max_shield = null -speed = null -cooldown = null +position = Vector2(123, 272) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { diff --git a/player.gd b/player.gd index cb86125..317437e 100644 --- a/player.gd +++ b/player.gd @@ -1,6 +1,6 @@ extends Area2D -signal died + signal damage_taken # signal shield_damage # signal shield_ui @@ -62,14 +62,14 @@ func set_shield(value: int): var old_value: int = shield shield = min(max_shield, value) 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: - set_process(false) - $Ship.hide() - $Explosion.show() - $Explosion/AnimationPlayer.play("explosion-one-shot") - await $Explosion/AnimationPlayer.animation_finished - died.emit() + set_process(false) + $Ship.hide() + $Explosion.show() + $Explosion/AnimationPlayer.play("explosion-one-shot") + await $Explosion/AnimationPlayer.animation_finished + EventBus.player_died.emit() func _on_gun_cooldown_timeout() -> void: can_shoot = true diff --git a/ui.gd b/ui.gd index 0b68d23..7c1ec10 100644 --- a/ui.gd +++ b/ui.gd @@ -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.value = new_value - - print("update_shield"," ","Current ",(new_value), " ", "(Max ",(max_value),")"," ","Old Value:"," ",(old_value)) - - if new_value >= max_value: - print("No need to tween!") - - 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() + 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(): - print("SHIELD FX!") shader_active = true shield_bar.material.set_shader_parameter("toggle", 1.0) await get_tree().create_timer(1).timeout