Finish refactoring other than making sure bonuses appear on player stat side
This commit is contained in:
@@ -68,6 +68,65 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
DropButton.Pressed += DropButtonPressed;
|
||||
}
|
||||
|
||||
public void OnResolved()
|
||||
{
|
||||
GameRepo.PlayerData.CurrentHP.Sync += CurrentHP_Sync;
|
||||
GameRepo.PlayerData.MaximumHP.Sync += MaximumHP_Sync;
|
||||
GameRepo.PlayerData.CurrentVT.Sync += CurrentVT_Sync;
|
||||
GameRepo.PlayerData.MaximumVT.Sync += MaximumVT_Sync;
|
||||
GameRepo.PlayerData.CurrentAttack.Sync += CurrentAttack_Sync;
|
||||
GameRepo.PlayerData.MaxAttack.Sync += MaxAttack_Sync;
|
||||
GameRepo.PlayerData.CurrentDefense.Sync += CurrentDefense_Sync;
|
||||
GameRepo.PlayerData.MaxDefense.Sync += MaxDefense_Sync;
|
||||
GameRepo.PlayerData.CurrentExp.Sync += CurrentExp_Sync;
|
||||
GameRepo.PlayerData.ExpToNextLevel.Sync += ExpToNextLevel_Sync;
|
||||
GameRepo.PlayerData.CurrentLevel.Sync += CurrentLevel_Sync;
|
||||
GameRepo.PlayerData.Inventory.EquippedWeapon.Sync += EquippedWeapon_Sync;
|
||||
GameRepo.PlayerData.Inventory.EquippedArmor.Sync += EquippedArmor_Sync;
|
||||
GameRepo.PlayerData.Inventory.EquippedAccessory.Sync += EquippedAccessory_Sync;
|
||||
}
|
||||
|
||||
private void EquippedAccessory_Sync(Accessory obj)
|
||||
{
|
||||
ATKBonusLabel.Text = GameRepo.PlayerData.BonusAttack != 0 ? $"{GameRepo.PlayerData.BonusAttack:+0;-#}" : "...";
|
||||
DEFBonusLabel.Text = GameRepo.PlayerData.BonusDefense != 0 ? $"{GameRepo.PlayerData.BonusDefense:+0;-#}" : "...";
|
||||
}
|
||||
|
||||
private void EquippedArmor_Sync(Armor obj)
|
||||
{
|
||||
ATKBonusLabel.Text = GameRepo.PlayerData.BonusAttack != 0 ? $"{GameRepo.PlayerData.BonusAttack:+0;-#}" : "...";
|
||||
DEFBonusLabel.Text = GameRepo.PlayerData.BonusDefense != 0 ? $"{GameRepo.PlayerData.BonusDefense:+0;-#}" : "...";
|
||||
}
|
||||
|
||||
private void EquippedWeapon_Sync(Weapon obj)
|
||||
{
|
||||
ATKBonusLabel.Text = GameRepo.PlayerData.BonusAttack != 0 ? $"{GameRepo.PlayerData.BonusAttack:+0;-#}" : "...";
|
||||
DEFBonusLabel.Text = GameRepo.PlayerData.BonusDefense != 0 ? $"{GameRepo.PlayerData.BonusDefense:+0;-#}" : "...";
|
||||
}
|
||||
|
||||
private void CurrentLevel_Sync(int obj) => CurrentLevelLabel.Text = $"Level {obj:D2}";
|
||||
|
||||
private void ExpToNextLevel_Sync(int obj) => EXPValue.Text = $"{GameRepo.PlayerData.CurrentExp.Value}/{obj}";
|
||||
|
||||
// TODO: Change font style when EXP Bonus effect is active
|
||||
private void CurrentExp_Sync(int obj) => EXPValue.Text = $"{obj}/{GameRepo.PlayerData.ExpToNextLevel.Value}";
|
||||
|
||||
private void MaxDefense_Sync(int obj) => DEFValue.Text = $"{GameRepo.PlayerData.CurrentDefense.Value}/{obj}";
|
||||
|
||||
private void CurrentDefense_Sync(int obj) => DEFValue.Text = $"{obj}/{GameRepo.PlayerData.MaxDefense.Value}";
|
||||
|
||||
private void MaxAttack_Sync(int obj) => ATKValue.Text = $"{GameRepo.PlayerData.CurrentAttack.Value}/{obj}";
|
||||
|
||||
private void CurrentAttack_Sync(int obj) => ATKValue.Text = $"{obj}/{GameRepo.PlayerData.MaxAttack.Value}";
|
||||
|
||||
private void MaximumVT_Sync(int obj) => VTValue.Text = $"{GameRepo.PlayerData.CurrentVT.Value}/{obj}";
|
||||
|
||||
private void CurrentVT_Sync(int obj) => VTValue.Text = $"{obj}/{GameRepo.PlayerData.MaximumVT.Value}";
|
||||
|
||||
private void MaximumHP_Sync(int obj) => HPValue.Text = $"{GameRepo.PlayerData.CurrentHP.Value}/{obj}";
|
||||
|
||||
private void CurrentHP_Sync(int obj) => HPValue.Text = $"{obj}/{GameRepo.PlayerData.MaximumHP.Value}";
|
||||
|
||||
public async Task RedrawInventory()
|
||||
{
|
||||
await HideUserActionPrompt();
|
||||
@@ -131,39 +190,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
{
|
||||
FloorLabel.Text = $"Level {GameRepo.CurrentFloor:D2}";
|
||||
|
||||
var currentLevel = GameRepo.PlayerData.CurrentLevel.Value;
|
||||
CurrentLevelLabel.Text = $"Level {currentLevel:D2}";
|
||||
|
||||
var currentHP = GameRepo.PlayerData.CurrentHP.Value;
|
||||
var maxHP = GameRepo.PlayerData.MaximumHP.Value;
|
||||
|
||||
HPValue.Text = $"{currentHP}/{maxHP}";
|
||||
|
||||
var currentVT = GameRepo.PlayerData.CurrentVT.Value;
|
||||
var maxVT = GameRepo.PlayerData.MaximumVT.Value;
|
||||
|
||||
VTValue.Text = $"{currentVT}/{maxVT}";
|
||||
|
||||
var currentAttack = GameRepo.PlayerData.CurrentAttack.Value;
|
||||
var maxAttack = GameRepo.PlayerData.MaxAttack.Value;
|
||||
|
||||
ATKValue.Text = $"{currentAttack}/{maxAttack}";
|
||||
|
||||
var currentDefense = GameRepo.PlayerData.CurrentDefense.Value;
|
||||
var maxDefense = GameRepo.PlayerData.MaxDefense.Value;
|
||||
DEFValue.Text = $"{currentDefense}/{maxDefense}";
|
||||
|
||||
var atkBonus = GameRepo.PlayerData.BonusAttack.Value;
|
||||
var defBonus = GameRepo.PlayerData.BonusDefense.Value;
|
||||
|
||||
ATKBonusLabel.Text = atkBonus != 0 ? $"{atkBonus:+0;-#}" : "...";
|
||||
DEFBonusLabel.Text = defBonus != 0 ? $"{defBonus:+0;-#}" : "...";
|
||||
|
||||
// TODO: Change font style when EXP Bonus effect is active
|
||||
var currentExp = GameRepo.PlayerData.CurrentExp.Value;
|
||||
var expToNextLevel = GameRepo.PlayerData.ExpToNextLevel.Value;
|
||||
EXPValue.Text = $"{currentExp}/{expToNextLevel}";
|
||||
|
||||
if (ItemSlots.Any())
|
||||
{
|
||||
var item = ItemSlots.ElementAt(_currentIndex).Item;
|
||||
@@ -223,7 +249,7 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
{
|
||||
var inventory = GameRepo.PlayerData.Inventory;
|
||||
var numberOfItemsToDisplay = _currentPageNumber == InventoryPageNumber.FirstPage ? Mathf.Min(inventory.Items.Count, _itemsPerPage) : Mathf.Min(inventory.Items.Count - _itemsPerPage, _itemsPerPage);
|
||||
var indexToStart = _currentPageNumber == InventoryPageNumber.FirstPage ? 0 : _itemsPerPage - 1;
|
||||
var indexToStart = _currentPageNumber == InventoryPageNumber.FirstPage ? 0 : _itemsPerPage;
|
||||
|
||||
ForwardArrow.Text = "";
|
||||
BackArrow.Text = "";
|
||||
@@ -294,38 +320,24 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
GameRepo.PlayerData.Inventory.Equip(equipableItem);
|
||||
itemSlot.SetEquippedSelectedItemStyle();
|
||||
}
|
||||
|
||||
UpdateStatBonusInfo();
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateStatBonusInfo()
|
||||
{
|
||||
var atkBonus = GameRepo.PlayerData.BonusAttack.Value;
|
||||
ATKBonusLabel.Text = atkBonus != 0 ? $"{atkBonus:+0;-#}" : "...";
|
||||
var defBonus = GameRepo.PlayerData.BonusDefense.Value;
|
||||
DEFBonusLabel.Text = defBonus != 0 ? $"{defBonus:+0;-#}" : "...";
|
||||
|
||||
HPValue.Text = $"{GameRepo.PlayerData.CurrentHP.Value}/{GameRepo.PlayerData.MaximumHP.Value}";
|
||||
VTValue.Text = $"{GameRepo.PlayerData.CurrentVT.Value}/{GameRepo.PlayerData.MaximumVT.Value}";
|
||||
}
|
||||
|
||||
private async void UseButtonPressed()
|
||||
{
|
||||
var currentItem = ItemSlots[_currentIndex].Item;
|
||||
if (currentItem is IEquipable)
|
||||
await EquipOrUnequipItem();
|
||||
if (currentItem is ConsumableItem consumable)
|
||||
else if (currentItem is ConsumableItem consumable)
|
||||
{
|
||||
EmitSignal(SignalName.ClosedMenu);
|
||||
consumable.Use();
|
||||
if (_currentIndex >= ItemSlots.Length - 1)
|
||||
_currentIndex--;
|
||||
if (_currentIndex <= 0)
|
||||
_currentIndex = 0;
|
||||
EmitSignal(SignalName.ClosedMenu);
|
||||
}
|
||||
|
||||
if (_currentIndex >= ItemSlots.Length - 1)
|
||||
_currentIndex--;
|
||||
if (_currentIndex <= 0)
|
||||
_currentIndex = 0;
|
||||
|
||||
// TODO: Replace with animation player (for visual effects/sound effects?)
|
||||
await ToSignal(GetTree().CreateTimer(0.25f), "timeout");
|
||||
await RedrawInventory();
|
||||
|
||||
Reference in New Issue
Block a user