Exemplo n.º 1
0
    public override void OnDrop(PointerEventData eventData)
    {
        if (CanDrop)
        {
            DragEquipment drag = eventData.pointerDrag.GetComponent <DragEquipment>();

            if (drag != null && drag.CanDrag)
            {
                ADropToMe oldParentDrop = drag.OldParent.GetComponent <ADropToMe>();

                //если перетащили откуда либо на пол
                if (!(oldParentDrop is DropToGround))
                {
                    //если передащили на заполненную клетку
                    EquipmentStack stack = new EquipmentStack(drag.EquipStack.EquipmentMainProperties, drag.EquipStack.EquipmentStats, drag.EquipStack.Count);
                    if (oldParentDrop.CanGetFromThisIventory(drag.EquipStack, null))
                    {
                        if (AddToThisInventory(drag.EquipStack))
                        {
                            oldParentDrop.RemoveFromThisInventory(drag.EquipStack);
                        }
                    }

                    Destroy(drag.gameObject);
                    RefreshUI();
                }
            }
        }
    }
    override public void OnDrop(PointerEventData eventData)
    {
        if (CanDrop)
        {
            DragEquipment drag = eventData.pointerDrag.GetComponent <DragEquipment>();

            if (drag != null && drag.CanDrag)
            {
                ADropToMe oldParentDrop = drag.OldParent.GetComponent <ADropToMe>();

                //если перетащили откуда либо кроме самого магазина
                if (!(oldParentDrop is DropToEquipmentMarket) && !(oldParentDrop is DropToConsumableMarket))
                {
                    EquipmentStack stack = new EquipmentStack(drag.EquipStack.EquipmentMainProperties, drag.EquipStack.EquipmentStats, drag.EquipStack.Count);
                    if (oldParentDrop.CanGetFromThisIventory(stack, null))
                    {
                        if (AddToThisInventory(stack))
                        {
                            oldParentDrop.RemoveFromThisInventory(stack);
                        }
                    }

                    Destroy(drag.gameObject);
                    RefreshUI();
                }
            }
        }
    }
Exemplo n.º 3
0
    public override void OnDrop(PointerEventData eventData)
    {
        if (CanDrop)
        {
            DragEquipment drag = eventData.pointerDrag.GetComponent <DragEquipment>();

            if (drag != null && drag.CanDrag)
            {
                var oldParentDrop = drag.OldParent.GetComponent <ADropToMe>();

                //если в инвентаре есть стак
                if (transform.childCount > 0)
                {
                    DragEquipment thisDrag = transform.GetChild(0).GetComponent <DragEquipment>();

                    //если перетаскиваем на такой же объект, но перетаскиваем не с экипировки
                    if ((drag.EquipStack.EquipmentStats.Type == thisDrag.EquipStack.EquipmentStats.Type &&
                         drag.EquipStack.EquipmentStats.Id == thisDrag.EquipStack.EquipmentStats.Id &&
                         drag.EquipStack.EquipmentStats.ItemDurability == thisDrag.EquipStack.EquipmentStats.ItemDurability) && !(oldParentDrop is DropToEquipment))
                    {
                        //высчитываем кол-во ппедметов, которые можем состакать
                        int cnt = Squad.playerSquadInstance.UnitCount - thisDrag.EquipStack.Count;
                        cnt = cnt <= drag.EquipStack.Count ? cnt : drag.EquipStack.Count;

                        //заносим предметы в инвентарь отряда
                        EquipmentStack stack = new EquipmentStack(thisDrag.EquipStack.EquipmentMainProperties, thisDrag.EquipStack.EquipmentStats, cnt);
                        if (oldParentDrop.CanGetFromThisIventory(stack, thisDrag.EquipStack))
                        {
                            if (AddToThisInventory(stack))
                            {
                                oldParentDrop.RemoveFromThisInventory(stack);
                            }
                        }
                    }
                }
                //если в инвентаре нет стака
                else
                {
                    //высчитываем кол-во ппедметов, которые можем поднять
                    int cnt = drag.EquipStack.Count;
                    cnt = Squad.playerSquadInstance.UnitCount < cnt ? Squad.playerSquadInstance.UnitCount : cnt;
                    EquipmentStack stack = new EquipmentStack(drag.EquipStack.EquipmentMainProperties, drag.EquipStack.EquipmentStats, cnt);

                    if (oldParentDrop.CanGetFromThisIventory(stack, null))
                    {
                        if (AddToThisInventory(stack))
                        {
                            oldParentDrop.RemoveFromThisInventory(stack);
                        }
                    }
                }

                Destroy(drag.gameObject);
                RefreshUI();
            }
        }
    }
Exemplo n.º 4
0
    override public void OnDrop(PointerEventData eventData)
    {
        if (CanDrop)
        {
            DragEquipment drag = eventData.pointerDrag.GetComponent <DragEquipment>();

            if (drag != null && drag.CanDrag)
            {
                var oldParentDrop = drag.OldParent.GetComponent <ADropToMe>();
                if (oldParentDrop != this)
                {
                    DragEquipment thisDrag = transform.GetChild(0).GetComponent <DragEquipment>();
                    //в этой ячейке полюбому должен быть inventoryItem
                    if (drag.EquipStack.EquipmentStats.Type == thisDrag.EquipStack.EquipmentStats.Type &&
                        (drag.EquipStack.EquipmentStats.Id != thisDrag.EquipStack.EquipmentStats.Id ||
                         drag.EquipStack.EquipmentStats.ItemDurability != thisDrag.EquipStack.EquipmentStats.ItemDurability))
                    {
                        //если предметов достаточно на весь отряд
                        if (Squad.playerSquadInstance.UnitCount <= drag.EquipStack.Count)
                        {
                            EquipmentStack stack = new EquipmentStack(drag.EquipStack.EquipmentMainProperties, drag.EquipStack.EquipmentStats, Squad.playerSquadInstance.UnitCount);
                            if (oldParentDrop.CanGetFromThisIventory(stack, thisDrag.EquipStack))
                            {
                                if (AddToThisInventory(stack))
                                {
                                    oldParentDrop.RemoveFromThisInventory(stack);
                                    if (!thisDrag.EquipStack.EquipmentStats.Empty)
                                    {
                                        oldParentDrop.AddToThisInventory(thisDrag.EquipStack);
                                    }
                                }
                            }

                            Destroy(drag.gameObject);
                            RefreshUI();
                        }
                        else
                        {
                            Toast.Instance.Show(LocalizedStrings.toast_not_enough_equipment_count);
                        }
                    }
                }
            }
        }
    }