70 lines
1.5 KiB
C#
70 lines
1.5 KiB
C#
namespace Sasalka;
|
|
|
|
public class Inventar
|
|
{
|
|
[Flags]
|
|
public enum InventorySlot
|
|
{
|
|
None = 0,
|
|
LeftHand = 1 << 0, // 1
|
|
RightHand = 1 << 1, // 2
|
|
Head = 1 << 2, // 4
|
|
Body = 1 << 3, // 8
|
|
Hands = 1 << 4, // 16
|
|
Bottom = 1 << 5, // 32
|
|
Feet = 1 << 6 // 64
|
|
}
|
|
|
|
public List<InventoryItem> Items { get; private set; } = new();
|
|
public static bool IsInventoryOpen = false;
|
|
|
|
// public Dictionary<InventorySlot, EquippedItem> EquippedItems { get; private set; } = new();
|
|
public Dictionary<InventorySlot, InventoryItem> EquippedItems { get; private set; } = new();
|
|
|
|
public event Action OnChanged;
|
|
public event Action<InventoryItem> OnEquipped;
|
|
public event Action<InventoryItem> OnUnEquipped;
|
|
|
|
// public class EquippedItem
|
|
// {
|
|
// public InventoryItem Item { get; set; }
|
|
// public GameObject SpawnedObject { get; set; }
|
|
// }
|
|
|
|
public void AddItem( InventoryItem item )
|
|
{
|
|
Items.Add( item );
|
|
OnChanged?.Invoke();
|
|
}
|
|
|
|
public void RemoveItem( InventoryItem item )
|
|
{
|
|
UnEquipItem( item );
|
|
Items.Remove( item );
|
|
OnChanged?.Invoke();
|
|
}
|
|
|
|
public void EquipItem( InventoryItem item )
|
|
{
|
|
if ( EquippedItems.ContainsValue( item ) )
|
|
{
|
|
UnEquipItem( item );
|
|
}
|
|
else
|
|
{
|
|
EquippedItems.Add( item.Definition.Slot, item );
|
|
OnEquipped?.Invoke( item );
|
|
}
|
|
}
|
|
|
|
public void UnEquipItem( InventoryItem item )
|
|
{
|
|
foreach ( var kvp in EquippedItems.Where( kvp => kvp.Value == item ).ToList() )
|
|
{
|
|
EquippedItems.Remove( kvp.Key );
|
|
}
|
|
|
|
OnUnEquipped?.Invoke( item );
|
|
}
|
|
}
|