void AddItemToPlayer(ItemUISystem itemUI, int slotNumber) { ItemsUI.Add(itemUI); itemUI.DraggedFrom = DraggedFrom.PlayerInventory; itemUI.SlotNumber = slotNumber; Slots[slotNumber].SetActive(false); isSlotEmpty[slotNumber] = false; ItemAddedToPlayer?.Invoke(itemUI); }
public void SetSystem(PlayerSystem player) { Owner = player; Owner.ItemDropSystem.ItemCreated += OnItemCreated; Owner.ItemDropSystem.ItemUICreated += OnItemUICreated; Owner.SpiritUISystem.MoveItemToPlayer += OnItemMovedToPlayer; void OnItemUICreated(ItemUISystem itemUI) { itemUI.DoubleClickedInPlayerInventory += OnItemDoubleClicked; ApplyConsumable += itemUI.System.OnConsumableApplied; } void OnItemMovedToPlayer(ItemUISystem itemUI) { if (CheckHaveFreeSlot(out var freeSlotIndex)) { var freeSlot = Slots[freeSlotIndex]; itemUI.transform.position = freeSlot.transform.position; itemUI.transform.SetParent(freeSlot.transform.parent); AddItemToPlayer(itemUI, freeSlotIndex); } } void OnItemCreated(ItemSystem item) { if (CheckHaveFreeSlot(out var freeSlotIndex)) { ItemsUI.Add( Owner.ItemDropSystem.CreateItemUI(item.Data, freeSlotIndex, Slots[freeSlotIndex].transform, Owner)); isSlotEmpty[freeSlotIndex] = false; Slots[freeSlotIndex].SetActive(false); ItemAddedToPlayer?.Invoke(ItemsUI[ItemsUI.Count - 1]); return; } } bool CheckHaveFreeSlot(out int freeSlotIndex) { freeSlotIndex = isSlotEmpty.IndexOf(true); return(freeSlotIndex != -1); } }