//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 } } }