Fix final remaining issues with inventory
This commit is contained in:
@@ -88,20 +88,20 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
|
||||
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;-#}" : "...";
|
||||
ATKBonusLabel.Text = $"{GameRepo.PlayerData.BonusAttack:+0;-#;\\.\\.\\.}";
|
||||
DEFBonusLabel.Text = $"{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;-#}" : "...";
|
||||
ATKBonusLabel.Text = $"{GameRepo.PlayerData.BonusAttack:+0;-#;\\.\\.\\.}";
|
||||
DEFBonusLabel.Text = $"{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;-#}" : "...";
|
||||
ATKBonusLabel.Text = $"{GameRepo.PlayerData.BonusAttack:+0;-#;\\.\\.\\.}";
|
||||
DEFBonusLabel.Text = $"{GameRepo.PlayerData.BonusDefense:+0;-#;\\.\\.\\.}";
|
||||
}
|
||||
|
||||
private void CurrentLevel_Sync(int obj) => CurrentLevelLabel.Text = $"Level {obj:D2}";
|
||||
@@ -298,8 +298,6 @@ public partial class InventoryMenu : Control, IInventoryMenu
|
||||
{
|
||||
await ToSignal(GetTree().CreateTimer(0.1f), "timeout");
|
||||
itemSlot.SetSelectedItemStyle();
|
||||
if (itemSlot.Item is IEquipable newEquipable && GameRepo.PlayerData.Inventory.IsEquipped(newEquipable))
|
||||
itemSlot.SetEquippedSelectedItemStyle();
|
||||
ItemDescriptionTitle.Text = $"{itemSlot.Item.Info.Name}";
|
||||
ItemEffectLabel.Text = $"{itemSlot.Item.Info.Description}";
|
||||
}
|
||||
|
||||
@@ -49,18 +49,36 @@ public partial class ItemSlot : HBoxContainer, IItemSlot
|
||||
|
||||
private void EquippedWeapon_Sync(Weapon obj)
|
||||
{
|
||||
if (Item is Weapon weapon && weapon == obj)
|
||||
{
|
||||
EquipBonus.Text = $"{obj.WeaponStats.Damage:+0;-#;\\.\\.\\.}";
|
||||
SetEquippedSelectedItemStyle();
|
||||
}
|
||||
if (Item is Weapon unequippedItem && unequippedItem != obj)
|
||||
{
|
||||
EquipBonus.Text = $"...";
|
||||
SetItemStyle();
|
||||
}
|
||||
}
|
||||
|
||||
private void EquippedArmor_Sync(Armor obj)
|
||||
{
|
||||
if (Item is Armor armor && armor == obj)
|
||||
{
|
||||
EquipBonus.Text = $"{obj.ArmorStats.Defense:+0;-#;\\.\\.\\.}";
|
||||
SetEquippedSelectedItemStyle();
|
||||
}
|
||||
if (Item is Armor unequippedItem && unequippedItem != obj)
|
||||
{
|
||||
EquipBonus.Text = $"...";
|
||||
SetItemStyle();
|
||||
}
|
||||
}
|
||||
|
||||
private void EquippedAccessory_Sync(Accessory obj)
|
||||
{
|
||||
if (Item is Accessory accessory && accessory == obj)
|
||||
SetEquippedSelectedItemStyle();
|
||||
if (Item is Accessory unequippedItem && unequippedItem != obj)
|
||||
SetItemStyle();
|
||||
}
|
||||
@@ -72,8 +90,16 @@ public partial class ItemSlot : HBoxContainer, IItemSlot
|
||||
}
|
||||
public void SetSelectedItemStyle()
|
||||
{
|
||||
ItemName.LabelSettings = SelectedItemFont;
|
||||
EquipBonus.LabelSettings = SelectedItemFont;
|
||||
if (Item is IEquipable equipableItem && GameRepo.PlayerData.Inventory.IsEquipped(equipableItem))
|
||||
{
|
||||
ItemName.LabelSettings = SelectedEquippedItemFont;
|
||||
EquipBonus.LabelSettings = EquippedItemFont;
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemName.LabelSettings = SelectedItemFont;
|
||||
EquipBonus.LabelSettings = SelectedItemFont;
|
||||
}
|
||||
}
|
||||
public void SetEquippedItemStyle()
|
||||
{
|
||||
@@ -84,7 +110,7 @@ public partial class ItemSlot : HBoxContainer, IItemSlot
|
||||
public void SetEquippedSelectedItemStyle()
|
||||
{
|
||||
ItemName.LabelSettings = SelectedEquippedItemFont;
|
||||
EquipBonus.LabelSettings = SelectedEquippedItemFont;
|
||||
EquipBonus.LabelSettings = EquippedItemFont;
|
||||
}
|
||||
|
||||
public IInventoryItem Item { get; set; } = default!;
|
||||
|
||||
@@ -3,7 +3,6 @@ using Chickensoft.GodotNodeInterfaces;
|
||||
using Godot;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using static GameJamDungeon.Inventory;
|
||||
|
||||
namespace GameJamDungeon;
|
||||
|
||||
@@ -27,6 +26,8 @@ public interface IInventory : INode
|
||||
public bool IsEquipped(IEquipable equipable);
|
||||
|
||||
event Inventory.InventoryAtCapacityEventHandler InventoryAtCapacity;
|
||||
|
||||
event Inventory.AccessoryUnequippedEventHandler AccessoryUnequipped;
|
||||
}
|
||||
|
||||
public partial class Inventory : Node, IInventory
|
||||
@@ -36,6 +37,8 @@ public partial class Inventory : Node, IInventory
|
||||
|
||||
[Signal]
|
||||
public delegate void InventoryAtCapacityEventHandler(string rejectedItemName);
|
||||
[Signal]
|
||||
public delegate void AccessoryUnequippedEventHandler(AccessoryStats unequippedAccessory);
|
||||
|
||||
public Inventory()
|
||||
{
|
||||
@@ -86,7 +89,10 @@ public partial class Inventory : Node, IInventory
|
||||
else if (equipable is Armor armor)
|
||||
_equippedArmor.OnNext(new Armor());
|
||||
else if (equipable is Accessory accessory)
|
||||
{
|
||||
EmitSignal(SignalName.AccessoryUnequipped, _equippedAccessory.Value.AccessoryStats);
|
||||
_equippedAccessory.OnNext(new Accessory());
|
||||
}
|
||||
else
|
||||
throw new NotImplementedException("Item type is not supported.");
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ namespace GameJamDungeon
|
||||
{
|
||||
var accessoryInfo = GD.Load<AccessoryStats>($"res://src/items/accessory/resources/{accessory}");
|
||||
var accessoryScene = AccessoryScene.Instantiate<Accessory>();
|
||||
accessoryScene.AccessoryInfo = accessoryInfo;
|
||||
accessoryScene.AccessoryStats = accessoryInfo;
|
||||
database.Add(accessoryScene);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ public partial class Accessory : Node3D, IInventoryItem, IEquipable
|
||||
|
||||
[Dependency] public IGameRepo GameRepo => this.DependOn<IGameRepo>();
|
||||
|
||||
public InventoryItemStats Info => AccessoryInfo;
|
||||
public InventoryItemStats Info => AccessoryStats;
|
||||
|
||||
[Export]
|
||||
public AccessoryStats AccessoryInfo { get; set; } = new AccessoryStats();
|
||||
public AccessoryStats AccessoryStats { get; set; } = new AccessoryStats();
|
||||
|
||||
[Node] public Sprite3D Sprite { get; set; } = default!;
|
||||
|
||||
@@ -26,7 +26,7 @@ public partial class Accessory : Node3D, IInventoryItem, IEquipable
|
||||
|
||||
public void OnReady()
|
||||
{
|
||||
Sprite.Texture = AccessoryInfo.Texture;
|
||||
Sprite.Texture = AccessoryStats.Texture;
|
||||
Pickup.BodyEntered += OnEntered;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,13 +125,7 @@ namespace GameJamDungeon
|
||||
GameRepo.PlayerGlobalPosition.Sync += PlayerGlobalPosition_Sync;
|
||||
HealthTimer.Timeout += OnHealthTimerTimeout;
|
||||
CollisionDetector.AreaEntered += OnEnemyHitBoxEntered;
|
||||
}
|
||||
|
||||
private void Inventory_AccessoryUnequipped(Accessory unequippedAccessory)
|
||||
{
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value - unequippedAccessory.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value - unequippedAccessory.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value - unequippedAccessory.AccessoryInfo.LUCKUp);
|
||||
PlayerData.Inventory.AccessoryUnequipped += Inventory_AccessoryUnequipped;
|
||||
}
|
||||
|
||||
public void OnReady()
|
||||
@@ -224,9 +218,16 @@ namespace GameJamDungeon
|
||||
|
||||
private void EquippedAccessory_Sync(Accessory equippedItem)
|
||||
{
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value + equippedItem.AccessoryInfo.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value + equippedItem.AccessoryInfo.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value + equippedItem.AccessoryInfo.LUCKUp);
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value + equippedItem.AccessoryStats.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value + equippedItem.AccessoryStats.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value + equippedItem.AccessoryStats.LUCKUp);
|
||||
}
|
||||
|
||||
private void Inventory_AccessoryUnequipped(AccessoryStats unequippedAccessory)
|
||||
{
|
||||
PlayerData.SetMaximumHP(PlayerData.MaximumHP.Value - unequippedAccessory.MaxHPUp);
|
||||
PlayerData.SetMaximumVT(PlayerData.MaximumVT.Value - unequippedAccessory.MaxVTUp);
|
||||
PlayerData.SetLuck(PlayerData.Luck.Value - unequippedAccessory.LUCKUp);
|
||||
}
|
||||
|
||||
private void OnEnemyHitBoxEntered(Area3D area)
|
||||
|
||||
@@ -36,8 +36,8 @@ namespace GameJamDungeon
|
||||
public IAutoProp<int> MaxAttack => _maxAttack;
|
||||
[Save("maxDefense")]
|
||||
public IAutoProp<int> MaxDefense => _maxDefense;
|
||||
public int BonusAttack => Inventory.EquippedWeapon.Value.WeaponStats.Damage + Inventory.EquippedAccessory.Value.AccessoryInfo.ATKUp;
|
||||
public int BonusDefense => Inventory.EquippedArmor.Value.ArmorStats.Defense + Inventory.EquippedAccessory.Value.AccessoryInfo.DEFUp;
|
||||
public int BonusAttack => Inventory.EquippedWeapon.Value.WeaponStats.Damage + Inventory.EquippedAccessory.Value.AccessoryStats.ATKUp;
|
||||
public int BonusDefense => Inventory.EquippedArmor.Value.ArmorStats.Defense + Inventory.EquippedAccessory.Value.AccessoryStats.DEFUp;
|
||||
[Save("expToNextLevel")]
|
||||
public IAutoProp<int> ExpToNextLevel => _expToNextLevel;
|
||||
[Save("luck")]
|
||||
|
||||
Reference in New Issue
Block a user