Weapons tested and general changes made to support the results of those tests

This commit is contained in:
2026-02-16 16:44:36 -08:00
parent a2ceb8e650
commit 017be896f3
43 changed files with 1096 additions and 821 deletions

View File

@@ -37,12 +37,15 @@ public partial class InventoryMenu : Control, IInventoryMenu
[Node] public Label StatusLabel { get; set; }
private Dictionary<IBaseInventoryItem, IItemSlot> ItemSlotWithItem;
private List<IItemSlot> ItemSlots;
private IItemSlot _currentlySelected;
public void OnResolved()
{
ItemSlotWithItem = [];
ItemSlots = [.. Inventory.GetChildren().OfType<IItemSlot>()];
ItemSlots.ForEach(x => x.ItemPressed += ItemPressed);
ItemSlots.ForEach(x => x.ItemSelected += ItemSelected);
@@ -52,6 +55,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
ActionPanel.AugmentMenuRequested += ActionPanel_AugmentMenuRequested;
AugmentMenu.AugmentMenuClosing += AugmentMenu_AugmentMenuClosing;
AugmentMenu.FocusMode = FocusModeEnum.None;
_player.EquipmentComponent.EquipmentChanged += EquipmentChanged;
_player.AttackComponent.CurrentAttack.Changed += AttackChanged;
_player.AttackComponent.MaximumAttack.Changed += AttackChanged;
_player.DefenseComponent.CurrentDefense.Changed += DefenseChanged;
@@ -63,6 +67,12 @@ public partial class InventoryMenu : Control, IInventoryMenu
Hide();
}
private void EquipmentChanged(IEquipableItem obj)
{
AttackChanged(0);
DefenseChanged(0);
}
private void AttackChanged(int obj) => PlayerATKLabel.Text = $"{_player.AttackComponent.CurrentAttack.Value:D2}/{_player.AttackComponent.MaximumAttack.Value:D2}+{_player.EquipmentComponent.BonusAttack}";
private void DefenseChanged(int obj) => PlayerDEFLabel.Text = $"{_player.DefenseComponent.CurrentDefense.Value:D2}/{_player.DefenseComponent.MaximumDefense.Value:D2}+{_player.EquipmentComponent.BonusDefense}";
@@ -120,9 +130,17 @@ public partial class InventoryMenu : Control, IInventoryMenu
for (var i = 0; i < inventory.Count; i++)
ItemSlots[i].SetItemToSlot(inventory[i]);
if (_currentlySelected == null && inventory.Any())
_currentlySelected = ItemSlots.First();
if (inventory.Any())
var validSelectableItems = inventory.Except(inventory.OfType<IEquipableItem>().Where(x => x.Glued)).ToList();
if (_currentlySelected != null && !validSelectableItems.Contains(_currentlySelected.Item.Value))
_currentlySelected = null;
if (_currentlySelected == null && validSelectableItems.Count > 0)
{
_currentlySelected = ItemSlots.FirstOrDefault(x => x.Item.Value == validSelectableItems.First());
}
if (validSelectableItems.Count > 0)
_currentlySelected.FocusItem();
ActionPanel.Hide();
}