Redesign and reimplement inventory menu

Add jewels but no implementation yet (needed redesign of inventory menu to function correctly)
This commit is contained in:
2026-02-11 04:08:42 -08:00
parent 5451f0b31f
commit 8ce38c3c13
51 changed files with 1695 additions and 256 deletions

View File

@@ -67,8 +67,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
foreach (var item in ItemSlots)
{
item.ItemPressed += Item_Pressed;
item.ItemEnterFocus += Item_FocusEntered;
item.ItemExitFocus += Item_ItemExitFocus;
}
_player.AttackComponent.CurrentAttack.Sync += Attack_Sync;
@@ -122,8 +120,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
SfxDatabase.Instance.Play(SoundEffect.SortInventory);
Inventory_InventoryChanged();
foreach (var slot in ItemSlots)
slot.SetItemStyle();
Item_ItemExitFocus(_currentlySelectedItem);
_currentlySelectedItem = ItemSlot1;
_currentlySelectedItem.GrabFocus();
@@ -151,8 +147,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
{
ItemDescriptionTitle.Text = string.Empty;
ItemEffectLabel.Text = string.Empty;
itemSlot.IsSelected = false;
itemSlot.SetItemStyle();
}
private void Item_FocusEntered(IItemSlot itemSlot)
@@ -166,19 +160,16 @@ public partial class InventoryMenu : Control, IInventoryMenu
ItemDescriptionTitle.Text = $"{itemSlot.Item.Value.ItemName}";
ItemEffectLabel.Text = $"{itemSlot.Item.Value.Description}";
_currentlySelectedItem = itemSlot;
itemSlot.IsSelected = true;
itemSlot.SetItemStyle();
AcceptEvent();
}
private void Item_Pressed(InventoryItem item) => DisplayUserActionPrompt(item);
private void Item_Pressed(IItemSlot item) => DisplayUserActionPrompt(item.Item.Value);
private async void Inventory_InventoryChanged()
{
foreach (var slot in ItemSlots)
{
slot.Visible = false;
slot.SetItemStyle();
}
var itemsToDisplay = _player.Inventory.Items;
@@ -213,6 +204,8 @@ public partial class InventoryMenu : Control, IInventoryMenu
await EquipOrUnequipItem(equipable);
else if (_currentlySelectedItem.Item.Value is Plastique plastique)
SetItem();
else if (_currentlySelectedItem.Item.Value is Jewel jewel)
AugmentEquipment(jewel);
else
await _game.UseItem(_currentlySelectedItem.Item.Value);
UseButton.Disabled = false;
@@ -250,6 +243,15 @@ public partial class InventoryMenu : Control, IInventoryMenu
_gameRepo.CloseInventory();
}
private void AugmentEquipment(Jewel jewel)
{
DisplayUserActionPrompt(jewel);
foreach (var item in ItemSlots)
{
item.Disabled = item.Item.Value is not Weapon && item.Item.Value is not Armor && item.Item.Value is not Accessory;
}
}
private void DisplayUserActionPrompt(InventoryItem item)
{
SfxDatabase.Instance.Play(SoundEffect.SelectUI);
@@ -264,6 +266,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
{
var isItemEquipped = _player.EquipmentComponent.IsItemEquipped(equipable);
UseButton.Text = isItemEquipped ? "Unequip" : "Equip";
UseButton.Disabled = equipable.Glued;
ThrowButton.Disabled = isItemEquipped;
ThrowButton.FocusMode = isItemEquipped ? FocusModeEnum.None : FocusModeEnum.All;
DropButton.Disabled = isItemEquipped;