cirnogodot/Scripts/Hud.cs
2025-01-31 13:03:38 +01:00

76 lines
1.6 KiB
C#

using Godot;
using System;
using Cirno.Scripts.Resources;
public partial class Hud : CanvasLayer
{
[Signal]
public delegate void StartGameEventHandler();
//private Label _healthLabel;
[Export]
public PackedScene SelectorScene { get; set; }
[Export]
private Node2D _selector;
[Export] private Label _healthLabel;
[Export] private Container _itemsContainer;
public override void _Ready()
{
// Assuming the HUD has a Label node named "HealthLabel"
//_healthLabel = GetNode<Label>("HealthLabel");
}
public void ShowMessage(string text)
{
var message = GetNode<Label>("Message");
message.Text = text;
message.Show();
GetNode<Timer>("MessageTimer").Start();
}
async public void ShowGameOver()
{
ShowMessage("Game Over");
var messageTimer = GetNode<Timer>("MessageTimer");
await ToSignal(messageTimer, Timer.SignalName.Timeout);
var message = GetNode<Label>("Message");
message.Text = "Dodge the Creeps!";
message.Show();
await ToSignal(GetTree().CreateTimer(1.0), SceneTreeTimer.SignalName.Timeout);
GetNode<Button>("StartButton").Show();
}
public void UpdateHealth(float newHealth, float maxHealth)
{
_healthLabel.Text = $"{newHealth}/{maxHealth}";
}
public void UpdateInteractable(Interactable interactable) {
GD.Print($"Interactable ${interactable.Name} entered in HUD");
//_selector.Position = _selector.tolo
}
public void AddInventoryItem(LootItem item)
{
TextureRect texture = new TextureRect();
texture.Texture = item.InventorySprite;
_itemsContainer.AddChild(texture);
}
public void RemoveInventoryItem(LootItem item)
{
}
}