using Cirno.Scripts.Resources; using Godot; namespace Cirno.Scripts.UI; public partial class WeaponAmmoCounter : Control { 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; 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; } UpdateCounter(); // Register this only if there's ammo InventoryManager.Instance.TotalAmmoChanged += (ammoKey, count) => { if (ammoKey != Item.WeaponData.AmmoKey) return; TotalAmmoLabel.Text = count.ToString(); }; } private void UpdateCounter() { TotalAmmoLabel.Text = InventoryManager.Instance.GetItemCount(Item.WeaponData.AmmoKey).ToString(); } }