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