Example #1
0
        private bool Match(BaseSlot slot, ArmorType type)
        {
            if (slot is ArmorSlot armorSlot)
            {
                return(armorSlot.ArmorType == type);
            }

            return(false);
        }
Example #2
0
        private bool Match(BaseSlot slot, WeaponType type)
        {
            if (slot is WeaponSlot weaponSlot)
            {
                return(weaponSlot.WeaponType == type);
            }

            return(false);
        }
Example #3
0
    public bool ShowPopup(BasePopup.TypeOfPopup type, string message = null, BaseSlot slot = null)
    {
        if (PopupList.ContainsKey(type.ToString()))
        {
            return(PopupList[type.ToString()]);
        }
        bool check = InitPopup(type);

        return(check);
    }
Example #4
0
        public void Show(BaseSlot slot, Vector2 position)
        {
            gameObject.SetActive(true);

            var itemTemplate = slot.Content.Definition;

            RectTransform.position = position;

            UpdateItemInfos(itemTemplate);
        }
Example #5
0
    public void Remove()
    {
        if (m_currentSlot != null)
        {
            m_currentSlot.RemoveElementHolder();
            m_currentSlot = null;
        }

        Reset();
    }
Example #6
0
    public void Place()
    {
        m_currentSlot = m_targetSlot;
        m_currentSlot.SetElementHolder(this);

        transform.SetParent(m_currentSlot.transform);
        transform.position = m_currentSlot.transform.position;

        m_slotManager.CheckMerge();

        m_targetSlot = null;
    }
Example #7
0
        void Constrct(AgentData agentData,
                      NavMeshAgent navMeshAgent,
                      SlotEnemy slotEnemy,
                      BaseSlot slot)
        {
            _agentData    = agentData;
            _navMeshAgent = navMeshAgent;
            _slotEnemy    = slotEnemy;
            _slot         = slot;

            _body = transform.GetChild(0);
            Assert.IsNotNull(_body, "_body != null");
        }
Example #8
0
    public void Setup(BaseSlot slot)
    {
        if (m_element.m_icon != null)
        {
            if (m_image == null)
            {
                GetImage();
            }
            m_image.sprite = m_element.m_icon;
        }

        m_startSlot = slot;
        Reset();
    }
Example #9
0
        public static bool TryStackItem(this BaseSlot slot, IItem item)
        {
            var targetItem = ((StackableItem)slot.Content);
            var originItem = ((StackableItem)item);

            if (targetItem.CanStack(originItem.Quantity))
            {
                targetItem.Stack(originItem.Quantity);
                slot.Refresh();
                return(true);
            }

            return(false);
        }
Example #10
0
 private void CheckDragableItem(PointerEventData eventData)
 {
     if (ItemUtilities.TryGetSlot(eventData.pointerEnter, out var targetSlot))
     {
         if (!targetSlot.IsEmpty)
         {
             DragItem?.Invoke();
             m_selectedSlot = targetSlot;
             m_selectedItem = targetSlot.Content;
             m_selectedSlot.Remove();
             EnableDragableIcon(eventData);
         }
     }
 }
Example #11
0
        public static bool IsStackableWith(this BaseSlot slot, IItem item)
        {
            if (!IsStackable(item))
            {
                return(false);
            }
            if (slot.GetType() != typeof(ItemSlot))
            {
                return(false);
            }

            var slotItem = slot.Content;

            return(item.Definition.Id == slotItem.Definition.Id);
        }
Example #12
0
    public override void OnDrag(PointerEventData eventData)
    {
        base.OnDrag(eventData);

        transform.position += (Vector3)eventData.delta;

        foreach (var slot in m_slotManager.GetMergeSlots())
        {
            if (RectTransformUtility.RectangleContainsScreenPoint(slot.m_rect, Input.mousePosition))
            {
                if (slot.IsEmpty())
                {
                    m_targetSlot = slot;
                    break;
                }
                m_targetSlot = null;
            }
        }
    }
Example #13
0
    public override void OnPointerUp(PointerEventData eventData)
    {
        base.OnPointerUp(eventData);

        hit2D     = Physics2D.Raycast(eventData.position, Vector2.down, 1, 1 << boxSlotLayer);
        hit2DSelf = Physics2D.Raycast(eventData.position, Vector2.down, 1, 1 << inventorySlotLayer);

        if (hit2D.collider != null)
        {
            BaseSlot otherSlot = hit2D.collider.GetComponent <BoxSlot>();

            //空
            if (otherSlot.storedItem == null)
            {
                BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false);
                BoxUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount);
                //删除原容器原数据
                InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false);
                InventoryUI.Instance.RemoveUIByIndex(slotIndex);
            }

            //id相同
            else if (otherSlot.storedItem.ID == storedItem.ID)
            {
                //赋予新容器数据
                BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false);
                BoxUI.Instance.AddUIByIndex(storedAmount, otherSlot.slotIndex);

                //删除原容器原数据
                InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false);
                InventoryUI.Instance.RemoveUIByIndex(slotIndex);
            }

            //不同
            else if (otherSlot.storedItem.ID != storedItem.ID)
            {
                BaseItem tempItem  = otherSlot.storedItem;
                int      tempCount = otherSlot.storedAmount;

                BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false);
                BoxManager.Instance.RemoveItemById(tempItem.ID, tempCount, false);
                BoxUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount);

                InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false);
                InventoryManager.Instance.AddItemByType(tempItem, tempCount, false);
                InventoryUI.Instance.SetUIBySlotIndex(slotIndex, tempItem, tempCount);
            }
        }

        else if (hit2DSelf.collider != null && isDrag)
        {
            BaseSlot otherSlot = hit2DSelf.collider.GetComponent <InventorySlot>();

            //空
            if (otherSlot.storedItem == null)
            {
                InventoryUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount);
                InventoryUI.Instance.RemoveUIByIndex(slotIndex);
            }

            else if (otherSlot.storedItem == storedItem)
            {
                //回到原格
                icon.color      = new Color(1, 1, 1, 1);
                icon.sprite     = storedSprite;
                amountText.text = storedAmount.ToString();
            }

            //id相同
            else if (otherSlot.storedItem.ID == storedItem.ID)
            {
                InventoryUI.Instance.AddUIByIndex(storedAmount, otherSlot.slotIndex);
                InventoryUI.Instance.RemoveUIByIndex(slotIndex);
            }

            //不同
            else if (otherSlot.storedItem.ID != storedItem.ID)
            {
                BaseItem tempItem  = otherSlot.storedItem;
                int      tempCount = otherSlot.storedAmount;

                InventoryUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount);
                InventoryUI.Instance.SetUIBySlotIndex(slotIndex, tempItem, tempCount);
            }
        }

        else
        {
            if (storedItem == null)
            {
                return;
            }
            //拖动失败,格子恢复
            icon.color      = new Color(1, 1, 1, 1);
            icon.sprite     = storedSprite;
            amountText.text = storedAmount.ToString();
        }
        isDrag = false;
    }
Example #14
0
 public void OnPointerExit(GameObject gbj)
 {
     m_previewPopup.Hide();
     m_currentTarget = null;
 }
Example #15
0
 private void ResetSelection()
 {
     DisableDragableIcon();
     m_selectedItem = null;
     m_selectedSlot = null;
 }
Example #16
0
 public void EnablePreview()
 {
     m_enablePreview = true;
     m_currentTarget = null;
     m_hoverTrigger.Reset();
 }
Example #17
0
 public void DisablePreview()
 {
     m_enablePreview = false;
     m_currentTarget = null;
     m_previewPopup.Hide();
 }
Example #18
0
        public static bool TryGetSlot(GameObject gbj, out BaseSlot targetSlot)
        {
            targetSlot = gbj != null?gbj.GetComponent <BaseSlot>() : null;

            return(targetSlot != null);
        }
Example #19
0
 public void PlaceResult()
 {
     GetSlotManager();
     m_targetSlot = m_slotManager.GetResultSlot();
     Place();
 }