using System; using System.Collections.Generic; using FishNet.Object; using Types; using Types.Items; using Types.UI; using Utils; namespace Managers.Item { public class InventoryManager : NetworkBehaviour, IItemManager { public PlayerManager playerManager; public readonly Dictionary Slots = new(); private void Start() { GameLogger.Log("InventoryManager Start"); } public GameSlot GetSlot(int slotId) { return Slots.GetValueOrDefault(slotId, null); } public GameItem GetItemFromSlot(int slotId) { return Slots.TryGetValue(slotId, out var slot) ? slot.Item : null; } public void RemoveItemFromSlot(int slotId) { if (Slots.TryGetValue(slotId, out var slot)) slot.Item = null; else GameLogger.LogWarning("Slot not found: " + slotId); } public void AddItemToOpenSlot(GameItem item) { /*foreach (var slot in Slots.Values) if (slot.IsEmpty()) { slot.item = item.GameItem; GameLogger.Log("Added item to slot: " + slot.position + " / " + item.GameItem.itemName + " / " + item.GameItem.quantity); return; } GameLogger.LogWarning("No empty slots available to add item: " + item.GameItem.itemName);*/ } public void AddItemToSlot(GameItem item, int slotId) { throw new NotImplementedException(); } public void AddSlotServerRpc(GameSlot gameSlot) { throw new NotImplementedException(); } public void SwapItems(int slotId1, int slotId2) { if (Slots.TryGetValue(slotId1, out var slot1) && Slots.TryGetValue(slotId2, out var slot2)) (slot1.Item, slot2.Item) = (slot2.Item, slot1.Item); } public void RemoveSlot(int slotId) { Slots.Remove(slotId); } /*[ServerRpc] public void AddSlot(Slot slot) { Slots[slot.position] = slot; } [ServerRpc] public void AddItemToSlot(SyncGameItem item, int slotId) { /*if (Slots.TryGetValue(slotId, out var slot)) slot.item = item.GameItem; else GameLogger.LogWarning("Slot not found: " + slotId);#1# } [ServerRpc] public void RemoveItemFromSlot(SyncGameItem item) { /*foreach (var slot in Slots.Values) if (slot.item == item.GameItem) { slot.item = null; GameLogger.Log("Removed item from slot: " + item.GameItem.itemName); return; } GameLogger.LogWarning("Item not found in any slot: " + item.GameItem.itemName);#1# }*/ public void RemoveItemInSlot(int slotId) { if (Slots.TryGetValue(slotId, out var slot)) slot.Item = null; else GameLogger.LogWarning("Slot not found: " + slotId); } /*public void Initialize(PlayerData playerData) { // create player slots for inventory Slots.Clear(); for (var i = 0; i < playerData.inventorySize; i++) { var slot = ScriptableObject.CreateInstance(); slot.position = i; slot.item = playerData.InventorySlots[i].item; AddSlot(slot); }*/ // GameLogger.Log("Completed Initialized items in InventoryManager"); public void Initialize(GamePlayer getGamePlayerData) { // } } }