Shmup-01b/ui.gd
Henry afc5c68569 Fixed _on_shield_changed logic to smoothly tween shield bar. Added a
function call to trigger shader to flash shield bar.
2025-12-16 13:09:52 +00:00

43 lines
1.3 KiB
GDScript

extends MarginContainer
@onready var shield_bar = $HBoxContainer/ShieldBar
@onready var score_counter = $HBoxContainer/ScoreCounter
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)
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
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()
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
shader_active = false
shield_bar.material.set_shader_parameter("toggle", 0.0)