cirnogodot/Scripts/Hud.cs

76 lines
1.6 KiB
C#
Raw Normal View History

2024-08-27 22:12:47 +02:00
using Godot;
using System;
2025-01-31 13:03:38 +01:00
using Cirno.Scripts.Resources;
2024-08-27 22:12:47 +02:00
public partial class Hud : CanvasLayer
{
[Signal]
public delegate void StartGameEventHandler();
2025-01-28 09:17:35 +01:00
2025-01-31 13:03:38 +01:00
//private Label _healthLabel;
2024-08-27 22:12:47 +02:00
2025-01-30 08:34:09 +01:00
[Export]
public PackedScene SelectorScene { get; set; }
[Export]
private Node2D _selector;
2025-01-31 13:03:38 +01:00
[Export] private Label _healthLabel;
[Export] private Container _itemsContainer;
2025-01-28 09:17:35 +01:00
public override void _Ready()
{
// Assuming the HUD has a Label node named "HealthLabel"
2025-01-31 13:03:38 +01:00
//_healthLabel = GetNode<Label>("HealthLabel");
2025-01-28 09:17:35 +01:00
}
2024-08-27 22:12:47 +02:00
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();
}
2025-01-28 09:17:35 +01:00
public void UpdateHealth(float newHealth, float maxHealth)
{
_healthLabel.Text = $"{newHealth}/{maxHealth}";
}
2025-01-30 08:34:09 +01:00
public void UpdateInteractable(Interactable interactable) {
GD.Print($"Interactable ${interactable.Name} entered in HUD");
//_selector.Position = _selector.tolo
}
2025-01-31 13:03:38 +01:00
public void AddInventoryItem(LootItem item)
{
TextureRect texture = new TextureRect();
texture.Texture = item.InventorySprite;
_itemsContainer.AddChild(texture);
}
public void RemoveInventoryItem(LootItem item)
{
}
2024-08-27 22:12:47 +02:00
}