예제 #1
0
        private void OnItemDroppedIn(ItemDroppedEventData data)
        {
            if (this.equipment.IsEquipped(data.InventoryItem.Item))
            {
                this.equipment.Swap(data.InventoryItem.Item, data.InventorySlot.InventoryItem.Item);
                return;
            }

            try
            {
                if (data.InventoryItem.Item.IsGem &&
                    data.InventorySlot.InventoryItem.Item.IsSocketable &&
                    data.InventorySlot.InventoryItem.Item.HasEmptySockets)
                {
                    data.InventorySlot.InventoryItem.Item.InsertSocket(data.InventoryItem.Item);
                    return;
                }

                this.equipment.EquipIntoSlot(
                    data.InventoryItem.Item, this.equipment.Slots[this.slots.IndexOf(data.InventorySlot)]);
            }
            catch (GameplayException exception)
            {
                UiErrorFrame.Instance.Push(exception.Message);
            }
        }
예제 #2
0
        private void OnItemDropped(ItemDroppedEventData data)
        {
            if (data.InventorySlot.Equals(this))
            {
                return;
            }

            ItemDroppedOut?.Invoke(data);
        }
예제 #3
0
        private void OnItemDroppedOut(ItemDroppedEventData data)
        {
            if (this.slots.Any(s => s == data.InventorySlot))
            {
                return;
            }

            // Note: to prevent Empty item dropping into inventory slot
            Timer.Instance.WaitForFixedUpdate(() => RemoveItem?.Invoke(data.InventoryItem.Item));
        }
예제 #4
0
        private void OnItemDroppedIn(ItemDroppedEventData data)
        {
            var containing = this.slots.FirstOrDefault(s => s.InventoryItem.Item == data.InventoryItem.Item);

            if (containing == null)
            {
                AddItemIndex?.Invoke(data.InventoryItem.Item, this.slots.IndexOf(data.InventorySlot));
                return;
            }

            SwapItems?.Invoke(containing.InventoryItem.Item, data.InventorySlot.InventoryItem.Item);
        }
예제 #5
0
        private void OnItemDroppedOut(ItemDroppedEventData data)
        {
            if (this.slots.Any(slot => slot.Equals(data.InventorySlot)))
            {
                return;
            }

            try
            {
                this.equipment.Unequip(data.InventoryItem.Item, data.InventorySlot.InventoryItem.Item);
            }
            catch (GameplayException exception)
            {
                UiErrorFrame.Instance.Push(exception.Message);
            }
        }
예제 #6
0
        private void OnItemDroppedIn(ItemDroppedEventData data)
        {
            if (data.InventoryItem.Item.IsGem &&
                data.InventorySlot.InventoryItem.Item.IsSocketable &&
                data.InventorySlot.InventoryItem.Item.HasEmptySockets)
            {
                data.InventorySlot.InventoryItem.Item.InsertSocket(data.InventoryItem.Item);
                return;
            }

            if (!this.inventory.Contains(data.InventoryItem.Item) && data.InventoryItem.Item.Equipment == null)
            {
                this.inventory.Pickup(data.InventoryItem.Item.Clone(), data.InventorySlot.InventoryItem.Item);
                data.InventoryItem.Item.Inventory.Remove(data.InventoryItem.Item);
                return;
            }

            this.inventory.Swap(data.InventoryItem.Item, data.InventorySlot.InventoryItem.Item);
        }
예제 #7
0
        public void OnDrop(PointerEventData pointer)
        {
            var dragging = pointer.pointerDrag.GetComponent <InventoryItem>();

            if (dragging == null || InventoryItem.Item.Equals(dragging.Item))
            {
                return;
            }

            if (InventoryItem.IsBlocked)
            {
                return;
            }

            var data = new ItemDroppedEventData(dragging, this);

            dragging.OnDrop(data);
            ItemDroppedIn?.Invoke(data);
        }
예제 #8
0
 private void OnItemDroppedOut(ItemDroppedEventData data)
 {
     ItemRemoved?.Invoke(data.InventoryItem.Item);
 }
예제 #9
0
 private void OnItemDroppedIn(ItemDroppedEventData data)
 {
     ItemPlaced?.Invoke(data.InventoryItem.Item);
 }
예제 #10
0
 public void OnDrop(ItemDroppedEventData data)
 {
     AudioManager.Instance.PlayItemPlace(Item);
     Dropped?.Invoke(data);
 }