Implement most jewels

This commit is contained in:
2026-02-12 02:36:25 -08:00
parent 230b47061d
commit b475df6f68
27 changed files with 681 additions and 162 deletions

View File

@@ -109,7 +109,8 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
var item = _currentlySelected.Item.Value;
if (_augmentMode)
{
//_player.AugmentItem(_augmentingJewel, item as EquipableItem);
_player.ApplyNewAugment(_augmentingJewel, item as EquipableItem);
_augmentMode = false;
ResetInventoryState();
}
else if (item is EquipableItem equipable)
@@ -120,18 +121,23 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
{
_player.Equip(equipable);
}
foreach (var slot in ItemSlots)
slot.SetItemEquipmentStatus(_player.EquipmentComponent.IsItemEquipped(slot.Item.Value));
ResetInventoryState();
}
else if (item is Plastique plastique)
{
_game.SetItem(plastique);
ResetInventoryState();
}
else if (item is Jewel jewel)
{
_augmentMode = true;
AugmentMode(jewel);
}
else
{
_game.UseItem(_currentlySelected.Item.Value);
ResetInventoryState();
}
CloseActionMenu();
}
@@ -143,7 +149,7 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
_game.DropItem(_currentlySelected.Item.Value);
CloseActionMenu();
_gameRepo.CloseInventory();
if (!_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
if (_currentlySelected != null && !_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
_currentlySelected = ItemSlots[previousItemInList];
}
@@ -153,7 +159,7 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
_game.ThrowItem(_currentlySelected.Item.Value);
CloseActionMenu();
_gameRepo.CloseInventory();
if (!_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
if (_currentlySelected != null && !_player.Inventory.Items.Contains(_currentlySelected.Item.Value))
_currentlySelected = ItemSlots[previousItemInList];
}
@@ -162,10 +168,16 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
if (ActionPanel.Visible && Input.IsActionJustPressed(GameInputs.Interact))
{
CloseActionMenu();
_augmentMode = false;
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
GetViewport().SetInputAsHandled();
}
else if (_augmentMode && !ActionPanel.Visible && Input.IsActionJustPressed(GameInputs.Interact))
{
GetViewport().SetInputAsHandled();
_augmentMode = false;
SfxDatabase.Instance.Play(SoundEffect.CancelUI);
ResetInventoryState();
}
if (!ActionPanel.Visible && Input.IsActionJustPressed(GameInputs.MoveUp))
{
if (ItemSlots.First(x => x.Visible) != _currentlySelected)
@@ -216,12 +228,20 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
{
var itemIsEquipped = _player.EquipmentComponent.IsItemEquipped(equipable);
InteractButton.Text = itemIsEquipped ? "Unequip" : "Equip";
InteractButton.Disabled = itemIsEquipped && equipable.Glued;
ThrowButton.Disabled = itemIsEquipped;
ThrowButton.FocusMode = itemIsEquipped ? FocusModeEnum.None : FocusModeEnum.All;
DropButton.Disabled = itemIsEquipped;
DropButton.FocusMode = itemIsEquipped ? FocusModeEnum.None : FocusModeEnum.All;
InteractButton.GrabFocus();
if ((item is Weapon weapon && _player.EquipmentComponent.EquippedWeapon.Value.Glued) ||
(item is Armor && _player.EquipmentComponent.EquippedArmor.Value.Glued) ||
(item is Accessory && _player.EquipmentComponent.EquippedAccessory.Value.Glued))
{
InteractButton.Disabled = true;
InteractButton.FocusMode = FocusModeEnum.None;
ThrowButton.GrabFocus();
}
}
else if (item is Plastique plastique)
{
@@ -250,8 +270,6 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
private void ResetInventoryState()
{
_augmentMode = false;
foreach (var item in ItemSlots)
{
item.Hide();
@@ -271,18 +289,28 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
{
var item = _player.Inventory.Items[i];
ItemSlots[i].Item.OnNext(item);
ItemSlots[i].FocusMode = FocusModeEnum.All;
ItemSlots[i].Disabled = false;
ItemSlots[i].Show();
ItemSlots[i].SetItemEquipmentStatus(_player.EquipmentComponent.IsItemEquipped(item));
if (item is IStackable stackable)
ItemCountLabels[i].Text = $"x{stackable.Count.Value:D2}";
if (item is EquipableItem equipable && equipable.Glued)
{
ItemSlots[i].FocusMode = FocusModeEnum.None;
ItemSlots[i].Disabled = true;
}
else
{
ItemSlots[i].FocusMode = FocusModeEnum.All;
ItemSlots[i].Disabled = false;
}
}
if (_currentlySelected == null || _currentlySelected.Disabled || _currentlySelected.FocusMode == FocusModeEnum.None)
_currentlySelected = ItemSlots.FirstOrDefault(x => !x.Disabled);
if (_currentlySelected != null)
_currentlySelected.GrabFocus();
else
_currentlySelected = ItemSlots.First();
}
private void Slot_FocusEntered(IItemSlot slot)
@@ -316,7 +344,8 @@ public partial class InventoryMenu2 : Control, IInventoryMenu
private void CloseActionMenu()
{
_currentlySelected.GrabFocus();
if (_currentlySelected != null)
_currentlySelected.GrabFocus();
ActionPanel.Hide();
}
}

View File

@@ -76,6 +76,14 @@ public partial class ItemRescueMenu : Control
InteractButton.Pressed += InteractButton_Pressed;
DropButton.Pressed += DropButton_Pressed;
_currentlySelected = ItemSlot01;
VisibilityChanged += ItemRescueMenu_VisibilityChanged;
}
private void ItemRescueMenu_VisibilityChanged()
{
ResetInventoryState();
_currentlySelected = ItemSlot01;
_currentlySelected.GrabFocus();
}
private void InteractButton_Pressed()