Additional refactoring and fixing of equipment data
Add attack data to enemy attacks (might need to rework a little bit for primary/secondary attacks)
This commit is contained in:
@@ -4,7 +4,6 @@ using Chickensoft.Introspection;
|
||||
using Godot;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Zennysoft.Game.Implementation;
|
||||
using Zennysoft.Ma.Adapter;
|
||||
|
||||
namespace Zennysoft.Game.Ma;
|
||||
@@ -74,10 +73,11 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
{
|
||||
Player.AttackComponent.CurrentAttack.Sync -= AttackSync;
|
||||
Player.AttackComponent.MaximumAttack.Sync -= AttackSync;
|
||||
Player.AttackComponent.BonusAttack.Sync -= BonusAttack_Sync;
|
||||
Player.EquipmentComponent.EquippedWeapon.Sync -= BonusSync;
|
||||
Player.EquipmentComponent.EquippedArmor.Sync -= BonusSync;
|
||||
Player.EquipmentComponent.EquippedAccessory.Sync -= BonusSync;
|
||||
Player.DefenseComponent.CurrentDefense.Sync -= DefenseSync;
|
||||
Player.DefenseComponent.MaximumDefense.Sync -= DefenseSync;
|
||||
Player.DefenseComponent.BonusDefense.Sync -= BonusDefense_Sync;
|
||||
}
|
||||
|
||||
public void OnResolved()
|
||||
@@ -85,10 +85,11 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
SetProcessInput(false);
|
||||
Player.AttackComponent.CurrentAttack.Sync += AttackSync;
|
||||
Player.AttackComponent.MaximumAttack.Sync += AttackSync;
|
||||
Player.AttackComponent.BonusAttack.Sync += BonusAttack_Sync;
|
||||
Player.EquipmentComponent.EquippedWeapon.Sync += BonusSync;
|
||||
Player.EquipmentComponent.EquippedArmor.Sync += BonusSync;
|
||||
Player.EquipmentComponent.EquippedAccessory.Sync += BonusSync;
|
||||
Player.DefenseComponent.CurrentDefense.Sync += DefenseSync;
|
||||
Player.DefenseComponent.MaximumDefense.Sync += DefenseSync;
|
||||
Player.DefenseComponent.BonusDefense.Sync += BonusDefense_Sync;
|
||||
}
|
||||
|
||||
public async Task DisplayMessage(string message)
|
||||
@@ -104,13 +105,14 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
private void AttackSync(int obj) => ATKValue.Text = $"{Player.AttackComponent.CurrentAttack.Value}/{Player.AttackComponent.MaximumAttack.Value}";
|
||||
|
||||
private void BonusAttack_Sync(int bonus) => ATKBonusLabel.Text = $"{bonus:+0;-#;\\.\\.\\.}";
|
||||
private void BonusSync(EquipableItem equip)
|
||||
{
|
||||
ATKBonusLabel.Text = $"{Player.EquipmentComponent.BonusAttack:+0;-#;\\.\\.\\.}";
|
||||
DEFBonusLabel.Text = $"{Player.EquipmentComponent.BonusDefense:+0;-#;\\.\\.\\.}";
|
||||
}
|
||||
|
||||
private void DefenseSync(int obj) => DEFValue.Text = $"{Player.DefenseComponent.CurrentDefense.Value}/{Player.DefenseComponent.MaximumDefense.Value}";
|
||||
|
||||
private void BonusDefense_Sync(int bonus) => DEFBonusLabel.Text = $"{bonus:+0;-#;\\.\\.\\.}";
|
||||
|
||||
|
||||
public async Task RefreshInventoryScreen()
|
||||
{
|
||||
await ClearItems();
|
||||
@@ -184,7 +186,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
if (@event.IsActionPressed(GameInputs.InventorySort))
|
||||
{
|
||||
inventory.Sort();
|
||||
inventory.Sort(Player.EquipmentComponent.EquippedWeapon.Value, Player.EquipmentComponent.EquippedArmor.Value, Player.EquipmentComponent.EquippedAccessory.Value);
|
||||
if (_currentIndex > inventory.Items.Count - 1)
|
||||
_currentIndex = inventory.Items.Count - 1;
|
||||
RefreshInventoryScreen();
|
||||
@@ -239,11 +241,12 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
if (currentItem is EquipableItem equipable)
|
||||
{
|
||||
UseButton.Text = equipable.IsEquipped ? "Unequip" : "Equip";
|
||||
ThrowButton.Disabled = equipable.IsEquipped;
|
||||
ThrowButton.FocusMode = equipable.IsEquipped ? FocusModeEnum.None : FocusModeEnum.All;
|
||||
DropButton.Disabled = equipable.IsEquipped;
|
||||
DropButton.FocusMode = equipable.IsEquipped ? FocusModeEnum.None : FocusModeEnum.All;
|
||||
var isItemEquipped = Player.EquipmentComponent.IsItemEquipped(equipable);
|
||||
UseButton.Text = isItemEquipped ? "Unequip" : "Equip";
|
||||
ThrowButton.Disabled = isItemEquipped;
|
||||
ThrowButton.FocusMode = isItemEquipped ? FocusModeEnum.None : FocusModeEnum.All;
|
||||
DropButton.Disabled = isItemEquipped;
|
||||
DropButton.FocusMode = isItemEquipped ? FocusModeEnum.None : FocusModeEnum.All;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -309,14 +312,14 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
itemSlot.Item = item;
|
||||
ItemsPage.AddChildEx(itemSlot);
|
||||
|
||||
if (itemSlot.Item is EquipableItem equipable && equipable.IsEquipped)
|
||||
if (Player.EquipmentComponent.IsItemEquipped(itemSlot.Item))
|
||||
itemSlot.SetEquippedItemStyle();
|
||||
}
|
||||
|
||||
if (ItemSlots.Length != 0)
|
||||
{
|
||||
ItemSlots.ElementAt(_currentIndex).SetSelectedItemStyle();
|
||||
if (ItemSlots.ElementAt(_currentIndex).Item is EquipableItem equipable && equipable.IsEquipped)
|
||||
if (Player.EquipmentComponent.IsItemEquipped(ItemSlots.ElementAt(_currentIndex).Item))
|
||||
ItemSlots.ElementAt(_currentIndex).SetEquippedSelectedItemStyle();
|
||||
}
|
||||
}
|
||||
@@ -325,7 +328,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
{
|
||||
await ToSignal(GetTree().CreateTimer(0.1f), "timeout");
|
||||
itemSlot.SetItemStyle();
|
||||
if (itemSlot.Item is EquipableItem equipable && equipable.IsEquipped)
|
||||
if (Player.EquipmentComponent.IsItemEquipped(itemSlot.Item))
|
||||
itemSlot.SetEquippedItemStyle();
|
||||
}
|
||||
|
||||
@@ -340,25 +343,25 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
private async Task EquipOrUnequipItem()
|
||||
{
|
||||
var itemSlot = ItemSlots[_currentIndex];
|
||||
if (itemSlot.Item is EquipableItem equipableItem)
|
||||
if (itemSlot.Item is not EquipableItem)
|
||||
return;
|
||||
var equippableItem = (EquipableItem)itemSlot.Item;
|
||||
if (Player.EquipmentComponent.IsItemEquipped(equippableItem))
|
||||
{
|
||||
if (equipableItem.IsEquipped)
|
||||
{
|
||||
ItemEffectLabel.Text = $"{itemSlot.Item.GetType()} unequipped.";
|
||||
Player.EquipmentComponent.Unequip(equipableItem);
|
||||
itemSlot.SetSelectedItemStyle();
|
||||
if (equipableItem.ItemTag == ItemTag.BreaksOnChange)
|
||||
Player.Inventory.Remove(equipableItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemEffectLabel.Text = $"{itemSlot.Item.GetType()} equipped.";
|
||||
Player.EquipmentComponent.Equip(equipableItem);
|
||||
itemSlot.SetEquippedSelectedItemStyle();
|
||||
}
|
||||
|
||||
RefreshUIAfterUserSelection();
|
||||
ItemEffectLabel.Text = $"{equippableItem.GetType().Name} unequipped.";
|
||||
Player.EquipmentComponent.Unequip(equippableItem);
|
||||
itemSlot.SetSelectedItemStyle();
|
||||
if (itemSlot.Item.ItemTag == ItemTag.BreaksOnChange)
|
||||
Player.Inventory.Remove(equippableItem);
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemEffectLabel.Text = $"{equippableItem.GetType().Name} equipped.";
|
||||
Player.EquipmentComponent.Equip(equippableItem);
|
||||
itemSlot.SetEquippedSelectedItemStyle();
|
||||
}
|
||||
|
||||
RefreshUIAfterUserSelection();
|
||||
}
|
||||
|
||||
private async void UseButtonPressed()
|
||||
|
||||
Reference in New Issue
Block a user