Implement BGM and SFX event system

This commit is contained in:
2024-09-14 16:01:55 -07:00
parent 0a71339bbe
commit cd8806a9fe
38 changed files with 718 additions and 116 deletions

View File

@@ -40,6 +40,8 @@ public interface IInventory : INode
event Inventory.AccessoryUnequippedEventHandler AccessoryUnequipped;
event Inventory.RaiseStatRequestEventHandler RaiseStatRequest;
event Inventory.EquippedItemEventHandler EquippedItem;
}
public partial class Inventory : Node, IInventory
@@ -53,6 +55,8 @@ public partial class Inventory : Node, IInventory
public delegate void AccessoryUnequippedEventHandler(AccessoryStats unequippedAccessory);
[Signal]
public delegate void RaiseStatRequestEventHandler(ConsumableItemStats consumableItemStats);
[Signal]
public delegate void EquippedItemEventHandler();
public Inventory()
{
@@ -94,6 +98,8 @@ public partial class Inventory : Node, IInventory
_equippedAccessory.OnNext(accessory);
else
throw new NotImplementedException("Item type is not supported.");
EmitSignal(SignalName.EquippedItem);
}
public void Unequip(IEquipable equipable)
@@ -157,7 +163,7 @@ public partial class Inventory : Node, IInventory
var accessories = listToSort.Where(x => x is Accessory).OrderBy(x => x as Accessory, new AccessoryComparer());
var consumables = listToSort.Where(x => x is ConsumableItem).OrderBy(x => x as ConsumableItem, new ConsumableComparer());
var throwables = listToSort.Where(x => x is ThrowableItem).OrderBy(x => x as ThrowableItem, new ThrowableComparer());
Items = [.. consumables, .. equippedItems, .. weapons, .. armor, .. accessories, .. throwables];
Items = [.. equippedItems, .. weapons, .. armor, .. accessories, .. consumables, .. throwables];
}
public class WeaponComparer : IComparer<Weapon>