Beispiel #1
0
    //items slots
    protected virtual void onBeginDrag(BasicItem _item, PointerEventData _eventData)
    {
        draggableItem = _item;
        //я не могу перетаскивать объекты которых нету
        iCanDrag = !draggableItem.IsEmpty();

        if (!iCanDrag)
        {
            return;
        }
        isDrag = true;


        bufferItem.transform.position = _eventData.pointerCurrentRaycast.worldPosition;
        bufferItem.Item = draggableItem.Item;

        indexTake = slots.FindIndex(x => x.currentItem == draggableItem);

        RemoveItem(draggableItem.Item);
        draggableItem.Dispose();

        NormalizedContainerBySlots();

        BasicSlot slot = _item.GetComponentInParent <BasicSlot>();

        indexThrow = slots.FindIndex(x => x == slot);
        slots[indexThrow].SetActiveRightHover(true);

        InventoryOverseer._instance.from = this;        //от куда взял
    }
    protected override void PointerEnter(BasicItem _item, PointerEventData _eventData)
    {
        if (isDrag && !bufferItem.IsEmpty())                       //если буфер не пуст
        {
            if (!isFull() || InventoryOverseer._instance.Verify()) //если контэйнер не полон или это тот контейнер откуда взяли
            {
                hoverSlot  = _item.GetComponentInParent <BasicSlot>();
                indexThrow = slots.FindIndex(x => x == hoverSlot);

                if (hoverSlot.IsEmpty() == false)                  //если слот на который навели не пуст
                //когда драгаешь сам на себя переходит в конец контэйнера
                {
                    if ((indexThrow + 1) % width == 0)                        //если навёл на последний элемент в строке
                    {
                        slots[indexThrow + 1].SetActiveLeftHover(true);       //то подсвечиваем на новой строке
                    }
                    else
                    {
                        hoverSlot.SetActiveRightHover(true);                        //то подсвечиваем право для вставки
                    }
                }
                else                    //если навёл на пустую ячейку, то подсветка самого последнего или первого
                {
                    if (isEmpty())      //если контэйнер пуст то подсвечивается первый слот
                    {
                        slots[0].SetActiveLeftHover(true);
                    }
                    else                      //или же последний
                    {
                        if (items.Count % width == 0)
                        {
                            slots[items.Count].SetActiveLeftHover(true);                            //не уверен
                        }
                        else
                        {
                            slots[items.Count - 1].SetActiveRightHover(true);
                        }
                    }
                }
            }
            else
            {
                //IsFull
            }
        }
    }