Weapons tested and general changes made to support the results of those tests
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user