mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 11:05:34 +00:00
71 lines
No EOL
1.9 KiB
C#
71 lines
No EOL
1.9 KiB
C#
using Cirno.Scripts.Resources;
|
|
using Godot;
|
|
|
|
namespace Cirno.Scripts.UI;
|
|
|
|
public partial class WeaponAmmoCounter : Container
|
|
{
|
|
public LootItem Item { get; private set; }
|
|
|
|
[Export]
|
|
public TextureRect Icon { get; private set; }
|
|
|
|
[Export]
|
|
public TextureRect AmmoIcon { get; private set; }
|
|
|
|
[Export]
|
|
public Label TotalAmmoLabel { get; private set; }
|
|
[Export]
|
|
public Label LoadedAmmoLabel { get; private set; }
|
|
|
|
public void Init(LootItem item)
|
|
{
|
|
Item = item;
|
|
|
|
Icon.Texture = item.InventorySprite;
|
|
|
|
InventoryManager.Instance.LoadedAmmoChanged += (weaponKey, count) =>
|
|
{
|
|
if (weaponKey != Item.WeaponData.ItemKey) return;
|
|
LoadedAmmoLabel.Text = count.ToString();
|
|
};
|
|
|
|
if (string.IsNullOrWhiteSpace(item.WeaponData.AmmoKey))
|
|
{
|
|
TotalAmmoLabel.Hide();
|
|
AmmoIcon.Hide();
|
|
return;
|
|
}
|
|
|
|
if (InventoryManager.Instance.TryGetItem(item.WeaponData.AmmoKey, out var ammoItem))
|
|
{
|
|
AmmoIcon.Texture = ammoItem.Item.InventorySprite;
|
|
}
|
|
else
|
|
{
|
|
AmmoIcon.Hide();
|
|
}
|
|
//AmmoIcon.Texture = InventoryManager.Instance.
|
|
|
|
UpdateCounter();
|
|
// Register this only if there's ammo
|
|
InventoryManager.Instance.TotalAmmoChanged += OnInstanceOnTotalAmmoChanged;
|
|
}
|
|
|
|
private void OnInstanceOnTotalAmmoChanged(StringName ammoKey, int count)
|
|
{
|
|
if (ammoKey != Item.WeaponData.AmmoKey) return;
|
|
TotalAmmoLabel.Text = count.ToString();
|
|
}
|
|
|
|
public void Delete()
|
|
{
|
|
InventoryManager.Instance.TotalAmmoChanged -= OnInstanceOnTotalAmmoChanged;
|
|
QueueFree();
|
|
}
|
|
|
|
private void UpdateCounter()
|
|
{
|
|
TotalAmmoLabel.Text = InventoryManager.Instance.GetItemCount(Item.WeaponData.AmmoKey).ToString();
|
|
}
|
|
} |