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 Items { get; private set; } = new(); public static bool IsInventoryOpen = false; // public Dictionary EquippedItems { get; private set; } = new(); public Dictionary EquippedItems { get; private set; } = new(); public event Action OnChanged; public event Action OnEquipped; public event Action 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 ); } }