2025-03-28 10:02:12 +01:00
|
|
|
using Godot;
|
|
|
|
|
using System;
|
2025-03-28 10:29:04 +01:00
|
|
|
using System.Linq;
|
2025-03-28 10:02:12 +01:00
|
|
|
using Cirno.Scripts.Resources;
|
|
|
|
|
|
|
|
|
|
public partial class StatusMenu : PanelContainer
|
|
|
|
|
{
|
|
|
|
|
[Export] public StringName HealthExpansionName { get; private set; }
|
|
|
|
|
|
|
|
|
|
[Export] public StringName ShieldExpansionName { get; private set; }
|
2025-03-28 10:29:04 +01:00
|
|
|
|
|
|
|
|
//[Export] public ItemsDatabase ItemsDatabase { get; private set; }
|
2025-03-28 10:02:12 +01:00
|
|
|
|
|
|
|
|
[Export] public Button HealthExpansionCounter { get; private set; }
|
|
|
|
|
|
|
|
|
|
[Export] public Button ShieldExpansionCounter { get; private set; }
|
|
|
|
|
|
2025-03-28 10:29:04 +01:00
|
|
|
[Export] public Button WeaponButton { get; private set; }
|
|
|
|
|
|
2025-03-28 10:02:12 +01:00
|
|
|
public override void _Ready()
|
|
|
|
|
{
|
|
|
|
|
CallDeferred(MethodName.InitializeDeferred);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void _ExitTree()
|
|
|
|
|
{
|
2025-06-12 18:03:55 +02:00
|
|
|
if (InventoryManager.Instance is not null)
|
|
|
|
|
{
|
|
|
|
|
InventoryManager.Instance.ItemAdded -= InstanceOnItemAdded;
|
|
|
|
|
}
|
2025-03-28 10:02:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void InitializeDeferred()
|
|
|
|
|
{
|
2025-06-12 18:03:55 +02:00
|
|
|
if (InventoryManager.Instance is null) return;
|
2025-03-28 10:02:12 +01:00
|
|
|
var healthExpansions = InventoryManager.Instance.GetItemCount(HealthExpansionName);
|
|
|
|
|
var shieldExpansions = InventoryManager.Instance.GetItemCount(ShieldExpansionName);
|
|
|
|
|
|
|
|
|
|
HealthExpansionCounter.Text = $"x{healthExpansions}";
|
|
|
|
|
ShieldExpansionCounter.Text = $"x{shieldExpansions}";
|
|
|
|
|
|
|
|
|
|
InventoryManager.Instance.ItemAdded += InstanceOnItemAdded;
|
2025-03-28 10:29:04 +01:00
|
|
|
|
|
|
|
|
InventoryManager.Instance.WeaponEquip += InstanceOnWeaponEquip;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void InstanceOnWeaponEquip(string itemKey)
|
|
|
|
|
{
|
|
|
|
|
//var weaponData = ItemsDatabase.GetLootItem(itemKey);
|
|
|
|
|
|
|
|
|
|
var succ = InventoryManager.Instance.TryGetItem(itemKey, out var item);
|
|
|
|
|
if (!succ)
|
|
|
|
|
{
|
|
|
|
|
GD.Print($"Could not get item {itemKey}");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
WeaponButton.Text = item.Item.ShortName;
|
|
|
|
|
WeaponButton.Icon = item.Item.InventorySprite;
|
2025-03-28 10:02:12 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void InstanceOnItemAdded(LootItem item, int currentamount)
|
|
|
|
|
{
|
|
|
|
|
if (item.ItemKey == HealthExpansionName)
|
|
|
|
|
{
|
|
|
|
|
HealthExpansionCounter.Text = $"x{currentamount}";
|
|
|
|
|
}
|
|
|
|
|
else if (item.ItemKey == ShieldExpansionName)
|
|
|
|
|
{
|
|
|
|
|
ShieldExpansionCounter.Text = $"x{currentamount}";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|