public void OnItemDoubleClicked(ItemUISystem itemUI) { var isSpiritChoosed = Owner.PlayerInputSystem.ChoosedSpirit != null; if (itemUI.System.Data is Consumable item) { if (item.Type != ConsumableType.Essence) { ApplyConsumable?.Invoke(new ConsumableEventArgs(Owner, itemUI)); RemoveItemFromPlayer(itemUI); Destroy(itemUI.gameObject); return; } else if (isSpiritChoosed && item.Type == ConsumableType.Essence) { ApplyConsumable?.Invoke(new ConsumableEventArgs(Owner.PlayerInputSystem.ChoosedSpirit, itemUI)); RemoveItemFromPlayer(itemUI); Destroy(itemUI.gameObject); return; } } if (isSpiritChoosed) { if (itemUI.DraggedFrom == DraggedFrom.PlayerInventory) { RemoveItemFromPlayer(itemUI); MoveItemToSpirit?.Invoke(itemUI); } } }
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); }
void RemoveItemFromPlayer(ItemUISystem itemUI) { if (itemUI.DraggedFrom == DraggedFrom.PlayerInventory) { isSlotEmpty[itemUI.SlotNumber] = true; Slots[itemUI.SlotNumber].SetActive(true); ItemsUI.Remove(itemUI); ItemRemovedFromPlayer?.Invoke(itemUI); } }