From b8728de3a0b7a92b9bfe0b821c9870f3d2135d19 Mon Sep 17 00:00:00 2001 From: Squinternator Date: Tue, 9 Apr 2024 21:36:43 +0000 Subject: [PATCH] Display Health Bar on player HUD --- characters/player/player.tscn | 1 + components/health_component.gd | 6 +++++- interfaces/hud/hud.tscn | 29 ++++++++++++++++++++++++----- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/characters/player/player.tscn b/characters/player/player.tscn index f01f6ec..8a70b27 100644 --- a/characters/player/player.tscn +++ b/characters/player/player.tscn @@ -150,4 +150,5 @@ root_path = NodePath(".") replication_config = SubResource("SceneReplicationConfig_5j4ew") script = SubResource("GDScript_uy24w") +[connection signal="health_changed" from="HealthComponent" to="HUD" method="_on_health_changed"] [connection signal="health_zeroed" from="HealthComponent" to="." method="die"] diff --git a/components/health_component.gd b/components/health_component.gd index 3252b70..915e20c 100644 --- a/components/health_component.gd +++ b/components/health_component.gd @@ -2,9 +2,13 @@ extends Area3D class_name HealthComponent @export var max_health : int = 100 -@export var health : int +@export var health : int: + set(value): + health = value + health_changed.emit(value) signal health_zeroed +signal health_changed func _ready(): health = max_health diff --git a/interfaces/hud/hud.tscn b/interfaces/hud/hud.tscn index 4ad5b3d..df716b8 100644 --- a/interfaces/hud/hud.tscn +++ b/interfaces/hud/hud.tscn @@ -1,23 +1,30 @@ -[gd_scene load_steps=5 format=3 uid="uid://bcv81ku26xo"] +[gd_scene load_steps=6 format=3 uid="uid://bcv81ku26xo"] [sub_resource type="GDScript" id="GDScript_2vxif"] script/source = "extends CanvasLayer +class_name HUD +@onready var health_bar = $HealthBar @onready var energy_bar = $EnergyBar func _update_energy_label(energy): energy_bar.value = energy -func _ready(): - _update_energy_label(100.0) - func _on_energy_changed(new_energy) -> void: _update_energy_label(new_energy) +func _update_health_label(health): + health_bar.value = health + +func _on_health_changed(new_health) -> void: + _update_health_label(new_health) " [sub_resource type="Theme" id="Theme_irfqb"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8ju42"] +bg_color = Color(1, 0.356863, 0.145098, 1) + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_f23s3"] bg_color = Color(0, 0.454902, 0.992157, 1) @@ -41,7 +48,7 @@ func _process(_delta): [node name="HUD" type="CanvasLayer"] script = SubResource("GDScript_2vxif") -[node name="EnergyBar" type="ProgressBar" parent="."] +[node name="HealthBar" type="ProgressBar" parent="."] offset_left = 32.0 offset_top = 32.0 offset_right = 288.0 @@ -49,6 +56,18 @@ offset_bottom = 40.0 size_flags_horizontal = 0 mouse_filter = 2 theme = SubResource("Theme_irfqb") +theme_override_styles/fill = SubResource("StyleBoxFlat_8ju42") +value = 60.0 +show_percentage = false + +[node name="EnergyBar" type="ProgressBar" parent="."] +offset_left = 32.0 +offset_top = 48.0 +offset_right = 288.0 +offset_bottom = 56.0 +size_flags_horizontal = 0 +mouse_filter = 2 +theme = SubResource("Theme_irfqb") theme_override_styles/fill = SubResource("StyleBoxFlat_f23s3") value = 60.0 show_percentage = false