Example #1
0
 public bool IsEmpty()
 {
     if (itemOnSlot == null)
     {
         itemOnSlot = GetComponentInChildren <ItemOnSlot>();
     }
     return(itemOnSlot.IsEmpty());
 }
Example #2
0
    public void Swap(ItemOnSlot target)
    {
        Item targetItem = target.Holder;
        int  count      = target.Count;

        target.Holder = Holder;
        target.Count  = Count;
        Holder        = targetItem;
        Count         = count;
    }
Example #3
0
 private void Awake()
 {
     itemOnSlot = GetComponentInChildren <ItemOnSlot>();
 }
Example #4
0
    public void OnEndDrag(PointerEventData eventData)
    {
        transform.SetParent(parentTransform);
        icon.transform.position = parentTransform.transform.position;
        Slot slot = eventData.pointerCurrentRaycast.gameObject.GetComponentInParent <Slot>();

        //交换slot 位置
        if (slot != null)
        {
            ItemOnSlot target     = slot.itemOnSlot;
            Slot       slotSource = GetComponentInParent <Slot>();

            InventoryType thisSlotType   = GetComponentInParent <Slot>().GetInventoryType();
            InventoryType targetSlotType = slot.GetInventoryType();

            InventorySlotsManager ismSource = GetComponentInParent <Slot>().GetInventorySlotsManager();
            InventorySlotsManager ismDest   = slot.GetInventorySlotsManager();

            int newIndex = target.transform.GetSiblingIndex();
            int oldIndex = parentTransform.GetSiblingIndex();


            //同槽内的交换
            if (thisSlotType == targetSlotType)
            {
                Swap(target);
            }

            //从其他槽拖拽消耗品到QuickUse
            else if (item.GetItemType() == ItemType.Consumable && targetSlotType == InventoryType.QuickUseSlots)
            {
                ismDest.inventoryUI.im.AddQuickUse(item.GetID(), slot.GetIndex());
                ismDest.inventoryUI.allItemPos.Remove(item);
                slotSource.Clear();
                //清楚消耗品索引
            }

            //拖着装备Item
            else if (item.GetItemType() == ItemType.Weapon && targetSlotType == InventoryType.RWeaponsSlots)
            {
                ismDest.inventoryUI.im.am.wm.EquipWeapon((WeaponItem)item, slot.GetIndex(), true);
                ismDest.inventoryUI.allItemPos.Remove(item);
                slotSource.Clear();
            }

            else if (item.GetItemType() == ItemType.Weapon && targetSlotType == InventoryType.LWeaponsSlots)
            {
                ismDest.inventoryUI.im.am.wm.EquipWeapon((WeaponItem)item, slot.GetIndex(), false);
                ismDest.inventoryUI.allItemPos.Remove(item);
                slotSource.Clear();
            }


            // InventoryUI inventoryUI = GetComponentInParent<Slot>().gameObject.GetComponentInParent<InventoryUI>();
            // if (inventoryUI.allItemToggle.isOn)
            // {
            //     inventoryUI.SwapPos(inventoryUI.allItemPos,target.itemOnSlot.Holder,item,newIndex,oldIndex);
            // }
            // else if (inventoryUI.weaponToggle.isOn)
            // {
            //     inventoryUI.SwapPos(inventoryUI.weaponItemPos,target.itemOnSlot.Holder,item,newIndex,oldIndex);
            // }
        }
        GetComponent <CanvasGroup>().blocksRaycasts = true;
    }