Set up new signals in EventBus; preparing to restructure game start

code.
This commit is contained in:
Henry 2025-12-20 09:15:59 +00:00
parent 7ef6076eda
commit dec3cbe595
9 changed files with 34 additions and 14 deletions

View file

@ -4,6 +4,8 @@ var bullet_scene = preload("res://enemy_bullet.tscn")
var start_pos = Vector2.ZERO var start_pos = Vector2.ZERO
var speed = 0 var speed = 0
var exploding = false
@onready var screensize = get_viewport_rect().size @onready var screensize = get_viewport_rect().size
func start(pos): func start(pos):
@ -36,6 +38,8 @@ func _process(delta):
func explode(): func explode():
if exploding: return
exploding = true
print_debug("Enemy explode!") print_debug("Enemy explode!")
speed = 0 speed = 0
$AnimationPlayer.play("explode") $AnimationPlayer.play("explode")

View file

@ -5,5 +5,7 @@ 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(value: int) 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 @warning_ignore_restore("unused_signal") # put any future signals you add between the two ignore annotations

6
global.gd Normal file
View file

@ -0,0 +1,6 @@
extends Node
# Global Game variables
var score: int = 0
var new_game = true
var playing = false

1
global.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://dhfukspc2nyu0

10
main.gd
View file

@ -1,7 +1,6 @@
extends Node2D extends Node2D
var enemy = preload("res://enemy.tscn") var enemy = preload("res://enemy.tscn")
var score = 0
var playing = false var playing = false
var enemy_count: int = 0 var enemy_count: int = 0
@ -28,9 +27,9 @@ func spawn_enemies():
func _on_enemy_died(value: int): func _on_enemy_died(value: int):
score += value Global.score += value
enemy_count -= 1 enemy_count -= 1
$CanvasLayer/UI.update_score(score) $CanvasLayer/UI.update_score(Global.score)
print_debug(enemy_count) print_debug(enemy_count)
if enemy_count == 0: if enemy_count == 0:
print("All enemies defeated!") print("All enemies defeated!")
@ -45,8 +44,9 @@ func _on_player_died():
start_button.show() start_button.show()
func new_game(): func new_game():
score = 0 Global.score = 0
$CanvasLayer/UI.update_score(score) EventBus.initialize_shieldbar.emit()
$CanvasLayer/UI.update_score(Global.score)
$Player.start() $Player.start()
spawn_enemies() spawn_enemies()
playing = true playing = true

View file

@ -14,6 +14,7 @@ var shield: int = max_shield:
var can_shoot = true var can_shoot = true
var shader_active = false var shader_active = false
var clamp_shield = clamp(shield, 0, max_shield)
@onready var screensize = get_viewport_rect().size @onready var screensize = get_viewport_rect().size
@onready var explosion = $Explosion @onready var explosion = $Explosion
@ -27,8 +28,10 @@ func start():
set_process(true) set_process(true)
$Ship.show() $Ship.show()
position = Vector2(screensize.x / 2, screensize.y - 64) position = Vector2(screensize.x / 2, screensize.y - 64)
shield = max_shield
$GunCooldown.wait_time = cooldown $GunCooldown.wait_time = cooldown
var old_value = 0
set_shield(max_shield)
EventBus.shield_changed.emit(max_shield, old_value, shield)
func _process(delta): func _process(delta):
var input = Input.get_vector("left", "right", "up", "down") var input = Input.get_vector("left", "right", "up", "down")
@ -59,17 +62,17 @@ func shoot():
tween.tween_property($Ship, "position:y", 0, 0.05) tween.tween_property($Ship, "position:y", 0, 0.05)
func set_shield(value: int): func set_shield(value: int):
var old_value: int = shield var old_value = shield
shield = min(max_shield, value) shield = clamp(value, 0, max_shield)
EventBus.shield_changed.emit(max_shield, old_value, shield) EventBus.shield_changed.emit(max_shield, old_value, shield)
print("Shield set to:", shield) print("Shield set to:", shield)
if shield <= 0: if shield <= 0:
EventBus.player_died.emit()
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
EventBus.player_died.emit()
func _on_gun_cooldown_timeout() -> void: func _on_gun_cooldown_timeout() -> void:
can_shoot = true can_shoot = true

View file

@ -17,6 +17,7 @@ config/icon="res://icon.svg"
[autoload] [autoload]
EventBus="*res://event_bus.gd" EventBus="*res://event_bus.gd"
Global="*res://global.gd"
[display] [display]

12
ui.gd
View file

@ -8,19 +8,17 @@ var shader_active = false
func _ready(): func _ready():
# get_node("Player.Ship").node_ready.connect("shield_ui", self, "_on_shield_ui") # get_node("Player.Ship").node_ready.connect("shield_ui", self, "_on_shield_ui")
EventBus.shield_changed.connect(_on_shield_changed) EventBus.shield_changed.connect(_on_shield_changed)
EventBus.initialize_shieldbar.connect(_on_initialize_shieldbar)
func update_score(value): func update_score(value):
score_counter.display_digits(value) score_counter.display_digits(value)
func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void: 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("Shield Depletion:", old_value, "-", new_value, " = ", shield_depletion)
var tween = create_tween() 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() _on_fx_shield_ui()
@ -30,3 +28,9 @@ func _on_fx_shield_ui():
await get_tree().create_timer(1).timeout await get_tree().create_timer(1).timeout
shader_active = false shader_active = false
shield_bar.material.set_shader_parameter("toggle", 0.0) 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!")

View file

@ -29,7 +29,6 @@ material = SubResource("ShaderMaterial_n5ude")
custom_minimum_size = Vector2(80, 16) custom_minimum_size = Vector2(80, 16)
layout_mode = 2 layout_mode = 2
step = 0.0 step = 0.0
value = 100.0
nine_patch_stretch = true nine_patch_stretch = true
stretch_margin_left = 3 stretch_margin_left = 3
stretch_margin_top = 3 stretch_margin_top = 3