Fixed shield issue by removing old experiments and ensuring the right

values were being used!
This commit is contained in:
Henry 2025-12-27 16:25:06 +00:00
parent c8d578af04
commit b5d97c0ffb
3 changed files with 32 additions and 20 deletions

View file

@ -75,6 +75,9 @@ func new_game():
Global.score = 0 Global.score = 0
$CanvasLayer/UI.update_score(Global.score) $CanvasLayer/UI.update_score(Global.score)
# Tell the shield to recharge.
# EventBus.initialize_shieldbar.emit()
# await EventBus.initialize_shieldbar
# instantiate the Player # instantiate the Player
# await get_tree().create_timer(1).timeout # await get_tree().create_timer(1).timeout
@ -82,9 +85,6 @@ func new_game():
add_child(instance) add_child(instance)
$Player.start() $Player.start()
# Tell the shield to recharge.
EventBus.initialize_shieldbar.emit()
# Tell the enemies to spawn! # Tell the enemies to spawn!
#await get_tree().create_timer(.5).timeout #await get_tree().create_timer(.5).timeout
spawn_enemies() spawn_enemies()

View file

@ -9,11 +9,18 @@ signal damage_taken
@export var cooldown: float = 0.25 @export var cooldown: float = 0.25
@export var bullet_scene : PackedScene @export var bullet_scene : PackedScene
@export var max_shield: int = 10 @export var max_shield: int = 10
var shield: int = 1: var shield: int = 0:
set = set_shield set = set_shield
var can_shoot = false var can_shoot = false
var shader_active = false var shader_active: bool = false:
set(value):
if value == true:
print_debug("Shader active!", get_stack())
else:
print_debug("Shader inactive!", get_stack())
var clamp_shield = clamp(shield, 0, max_shield) var clamp_shield = clamp(shield, 0, max_shield)
@onready var screensize = get_viewport_rect().size @onready var screensize = get_viewport_rect().size
@ -35,10 +42,11 @@ func start():
position = Vector2(screensize.x / 2, screensize.y) position = Vector2(screensize.x / 2, screensize.y)
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "position:y", 48 * -1, .75).as_relative() tween.tween_property(self, "position:y", 48 * -1, .75).as_relative()
await tween.finished
$GunCooldown.wait_time = cooldown $GunCooldown.wait_time = cooldown
set_shield(max_shield) set_shield(max_shield)
print(shield) print(shield)
await get_tree().create_timer(2).timeout await get_tree().create_timer(1).timeout
set_process(true) set_process(true)
$Ship/Boosters.show() $Ship/Boosters.show()
can_shoot = true can_shoot = true
@ -74,11 +82,11 @@ func shoot():
func set_shield(value: int): func set_shield(value: int):
var old_value = shield var old_value = shield
shield = clamp(value, 0, max_shield) # shield = clamp(value, 0, max_shield)
shield = min(max_shield, value)
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:
print("Shader deactivated!")
set_process(false) set_process(false)
$Ship.hide() $Ship.hide()
shader_active = false shader_active = false
@ -93,27 +101,31 @@ func _on_gun_cooldown_timeout() -> void:
func _on_area_entered(area): func _on_area_entered(area):
if area.is_in_group("enemies"): if area.is_in_group("enemies"):
area.explode()
shield -= int(max_shield / 2) shield -= int(max_shield / 2)
damage_taken.emit() # damage_taken.emit()
area.explode()
if area.is_in_group("enemy_bullets") and self.monitoring == true: if area.is_in_group("enemy_bullets") and self.monitoring == true:
damage_taken.emit() damage_taken.emit()
func _on_damage_taken() -> void: func _on_damage_taken():
shader_active = true
print("Shader active!") if shield == 0:
$Ship.material.set_shader_parameter("toggle", 1.0) shader_active = false
await get_tree().create_timer(1).timeout return
$Ship.material.set_shader_parameter("toggle", 0.0)
shader_active = false else:
print("Shader deactivated!") shader_active = true
$Ship.material.set_shader_parameter("toggle", 1.0)
await get_tree().create_timer(1).timeout
$Ship.material.set_shader_parameter("toggle", 0.0)
shader_active = false
func _on_player_victory() -> void: func _on_player_victory() -> void:
print("Victory!") print("Victory!")
set_process(false) set_process(false)
$Ship.frame = 1 $Ship.frame = 1
await get_tree().create_timer(2).timeout await get_tree().create_timer(1).timeout
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN) tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
await tween.finished await tween.finished

2
ui.gd
View file

@ -16,7 +16,7 @@ func update_score(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 = old_value
var tween = create_tween() var tween = create_tween()
print_debug("Tweening shield bar") print_debug("Tweening shield bar")
tween.tween_property(shield_bar, "value", new_value, .25).set_trans(Tween.TRANS_LINEAR) tween.tween_property(shield_bar, "value", new_value, .25).set_trans(Tween.TRANS_LINEAR)