Set up new signals in EventBus; preparing to restructure game start
code.
This commit is contained in:
parent
7ef6076eda
commit
dec3cbe595
9 changed files with 34 additions and 14 deletions
4
enemy.gd
4
enemy.gd
|
|
@ -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")
|
||||||
|
|
|
||||||
|
|
@ -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
6
global.gd
Normal 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
1
global.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dhfukspc2nyu0
|
||||||
10
main.gd
10
main.gd
|
|
@ -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
|
||||||
|
|
|
||||||
11
player.gd
11
player.gd
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
12
ui.gd
|
|
@ -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!")
|
||||||
|
|
|
||||||
1
ui.tscn
1
ui.tscn
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue