Fix final remaining issues with inventory

This commit is contained in:
2024-09-12 10:28:34 -07:00
parent af384d3ddb
commit 043d7f1ba8
7 changed files with 59 additions and 28 deletions

View File

@@ -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.");
}

View File

@@ -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);
}

View File

@@ -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;
}