From dec3cbe595e028bfeb18838d1b9d27046fe0dd24 Mon Sep 17 00:00:00 2001 From: Henry Date: Sat, 20 Dec 2025 09:15:59 +0000 Subject: [PATCH] Set up new signals in EventBus; preparing to restructure game start code. --- enemy.gd | 4 ++++ event_bus.gd | 2 ++ global.gd | 6 ++++++ global.gd.uid | 1 + main.gd | 10 +++++----- player.gd | 11 +++++++---- project.godot | 1 + ui.gd | 12 ++++++++---- ui.tscn | 1 - 9 files changed, 34 insertions(+), 14 deletions(-) create mode 100644 global.gd create mode 100644 global.gd.uid diff --git a/enemy.gd b/enemy.gd index e9e4046..75cfd78 100644 --- a/enemy.gd +++ b/enemy.gd @@ -4,6 +4,8 @@ var bullet_scene = preload("res://enemy_bullet.tscn") var start_pos = Vector2.ZERO var speed = 0 +var exploding = false + @onready var screensize = get_viewport_rect().size func start(pos): @@ -36,6 +38,8 @@ func _process(delta): func explode(): + if exploding: return + exploding = true print_debug("Enemy explode!") speed = 0 $AnimationPlayer.play("explode") diff --git a/event_bus.gd b/event_bus.gd index 95a4a10..ff7fa67 100644 --- a/event_bus.gd +++ b/event_bus.gd @@ -5,5 +5,7 @@ extends Node signal shield_changed(max_value: int, old_value: int, new_value: int) signal player_died() signal enemy_died(value: int) +signal initialize_shieldbar() +signal start_game() @warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations diff --git a/global.gd b/global.gd new file mode 100644 index 0000000..34798f8 --- /dev/null +++ b/global.gd @@ -0,0 +1,6 @@ +extends Node + +# Global Game variables +var score: int = 0 +var new_game = true +var playing = false diff --git a/global.gd.uid b/global.gd.uid new file mode 100644 index 0000000..73ebf5f --- /dev/null +++ b/global.gd.uid @@ -0,0 +1 @@ +uid://dhfukspc2nyu0 diff --git a/main.gd b/main.gd index 3c70bcf..301ffc1 100644 --- a/main.gd +++ b/main.gd @@ -1,7 +1,6 @@ extends Node2D var enemy = preload("res://enemy.tscn") -var score = 0 var playing = false var enemy_count: int = 0 @@ -28,9 +27,9 @@ func spawn_enemies(): func _on_enemy_died(value: int): - score += value + Global.score += value enemy_count -= 1 - $CanvasLayer/UI.update_score(score) + $CanvasLayer/UI.update_score(Global.score) print_debug(enemy_count) if enemy_count == 0: print("All enemies defeated!") @@ -45,8 +44,9 @@ func _on_player_died(): start_button.show() func new_game(): - score = 0 - $CanvasLayer/UI.update_score(score) + Global.score = 0 + EventBus.initialize_shieldbar.emit() + $CanvasLayer/UI.update_score(Global.score) $Player.start() spawn_enemies() playing = true diff --git a/player.gd b/player.gd index c52128b..bea960e 100644 --- a/player.gd +++ b/player.gd @@ -14,6 +14,7 @@ var shield: int = max_shield: var can_shoot = true var shader_active = false +var clamp_shield = clamp(shield, 0, max_shield) @onready var screensize = get_viewport_rect().size @onready var explosion = $Explosion @@ -27,8 +28,10 @@ func start(): set_process(true) $Ship.show() position = Vector2(screensize.x / 2, screensize.y - 64) - shield = max_shield $GunCooldown.wait_time = cooldown + var old_value = 0 + set_shield(max_shield) + EventBus.shield_changed.emit(max_shield, old_value, shield) func _process(delta): var input = Input.get_vector("left", "right", "up", "down") @@ -59,17 +62,17 @@ func shoot(): tween.tween_property($Ship, "position:y", 0, 0.05) func set_shield(value: int): - var old_value: int = shield - shield = min(max_shield, value) + var old_value = shield + shield = clamp(value, 0, max_shield) EventBus.shield_changed.emit(max_shield, old_value, shield) print("Shield set to:", shield) if shield <= 0: + EventBus.player_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/project.godot b/project.godot index d690f5a..e8ea034 100644 --- a/project.godot +++ b/project.godot @@ -17,6 +17,7 @@ config/icon="res://icon.svg" [autoload] EventBus="*res://event_bus.gd" +Global="*res://global.gd" [display] diff --git a/ui.gd b/ui.gd index 633abf8..9cc4abe 100644 --- a/ui.gd +++ b/ui.gd @@ -8,19 +8,17 @@ var shader_active = false func _ready(): # get_node("Player.Ship").node_ready.connect("shield_ui", self, "_on_shield_ui") EventBus.shield_changed.connect(_on_shield_changed) + EventBus.initialize_shieldbar.connect(_on_initialize_shieldbar) func update_score(value): score_counter.display_digits(value) 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 - 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) + tween.tween_property(shield_bar, "value", new_value, 3).set_trans(Tween.TRANS_LINEAR) _on_fx_shield_ui() @@ -30,3 +28,9 @@ func _on_fx_shield_ui(): await get_tree().create_timer(1).timeout shader_active = false shield_bar.material.set_shader_parameter("toggle", 0.0) + +func _on_initialize_shieldbar(): + print("Shieldbar Initializing!") + # var tween = create_tween() + # tween.tween_property(shield_bar, "value", 10, 3).set_trans(Tween.TRANS_LINEAR) + # print("Tweens played!") diff --git a/ui.tscn b/ui.tscn index 8729dae..0e897c0 100644 --- a/ui.tscn +++ b/ui.tscn @@ -29,7 +29,6 @@ material = SubResource("ShaderMaterial_n5ude") custom_minimum_size = Vector2(80, 16) layout_mode = 2 step = 0.0 -value = 100.0 nine_patch_stretch = true stretch_margin_left = 3 stretch_margin_top = 3