using Godot; using System; using Cirno.Scripts; using Godot.Collections; public partial class ItemsMenu : ItemList { private InventoryManager _inventoryManager; private Dictionary _itemsDic = new(); public override void _Ready() { CallDeferred(MethodName.DeferredInitialize); this.Hide(); } public override void _Process(double delta) { if (Input.IsActionJustPressed("inventory")) { if (!Visible) { ShowInventory(); } else { HideInventory(); } } } private void DeferredInitialize() { _inventoryManager = GameManager.Instance.GetInventoryManager(); ItemSelected += OnItemSelected; Clear(); ItemActivated += OnItemSelected; } private void OnItemSelected(long index) { var item = _itemsDic[index]; GD.Print("Item: " + item); _inventoryManager.UseItem(item); HideInventory(); } public void HideInventory() { this.Hide(); Clear(); _itemsDic.Clear(); } public void ShowInventory() { this.Show(); foreach (var item in _inventoryManager.Items) { if (item.Count <= 0) continue; var index = this.AddItem($"{item.Item.ItemName} x{item.Count}", item.Item.InventorySprite, item.Item.Selectable); this.SetItemTooltip(index, item.Item.ItemDescription); _itemsDic.Add(index, item.Item.ItemKey); } } }