better healthbars and one for the player as well
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 42s
Create tag and build when new code gets to main / Test (push) Successful in 6m13s
Create tag and build when new code gets to main / Export (push) Successful in 7m5s

This commit is contained in:
2026-01-26 18:09:29 +01:00
parent 2fdc9c7ca8
commit ddf1bd019b
12 changed files with 190 additions and 49 deletions

58
scenes/ui/Healthbar.cs Normal file
View File

@@ -0,0 +1,58 @@
using Godot;
using System;
[GlobalClass]
public partial class Healthbar : ProgressBar
{
private Timer _damageCatchUpTimer;
private ProgressBar _damagedHealth;
private float _currentHealth;
public float CurrentHealth
{
get => _currentHealth;
set => SetHealth(value);
}
public override void _Ready()
{
_damageCatchUpTimer = GetNode<Timer>("DamageCatchUp");
_damagedHealth = GetNode<ProgressBar>("Damagebar");
_damageCatchUpTimer.Timeout += OnDamageCatchUp;
Visible = false;
}
public void Initialize(float initialHealth)
{
_currentHealth = initialHealth;
MaxValue = initialHealth;
Value = initialHealth;
_damagedHealth.MaxValue = initialHealth;
_damagedHealth.Value = initialHealth;
}
public void SetHealth(float newHealth)
{
var previousHealth = _currentHealth;
_currentHealth = Mathf.Min(newHealth, (float) MaxValue);
_currentHealth = newHealth;
Value = _currentHealth;
Visible = _currentHealth < MaxValue;
if (_currentHealth < previousHealth)
{
_damageCatchUpTimer.Start();
}
else
{
_damagedHealth.Value = _currentHealth;
}
}
public void OnDamageCatchUp()
{
_damagedHealth.Value = _currentHealth;
}
}

View File

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

49
scenes/ui/healthbar.tscn Normal file
View File

@@ -0,0 +1,49 @@
[gd_scene load_steps=6 format=3 uid="uid://cyw8p0p6a78tl"]
[ext_resource type="Script" uid="uid://l5cjcaehyssk" path="res://scenes/ui/Healthbar.cs" id="1_0k5hr"]
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0sgot"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0k5hr"]
bg_color = Color(0.698864, 0.047356047, 0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0sgot"]
bg_color = Color(0.14767182, 0.14767182, 0.14767176, 1)
expand_margin_left = 2.0
expand_margin_top = 2.0
expand_margin_right = 2.0
expand_margin_bottom = 2.0
shadow_color = Color(0, 0, 0, 0.27450982)
shadow_offset = Vector2(0, 1)
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kl70x"]
bg_color = Color(0.8862616, 0.88626146, 0.8862615, 1)
[node name="Healthbar" type="ProgressBar"]
z_index = 10
custom_minimum_size = Vector2(512, 12)
offset_right = 512.0
offset_bottom = 12.0
theme_override_styles/background = SubResource("StyleBoxEmpty_0sgot")
theme_override_styles/fill = SubResource("StyleBoxFlat_0k5hr")
value = 60.0
show_percentage = false
script = ExtResource("1_0k5hr")
[node name="Damagebar" type="ProgressBar" parent="."]
z_index = -10
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_styles/background = SubResource("StyleBoxFlat_0sgot")
theme_override_styles/fill = SubResource("StyleBoxFlat_kl70x")
value = 80.0
show_percentage = false
[node name="DamageCatchUp" type="Timer" parent="."]
wait_time = 0.8
one_shot = true
ignore_time_scale = true