private void DefaultCase(UIItemSlot clickedSlot)
    {
        if (!cursorSlot.HasItem && clickedSlot.HasItem)
        {
            cursorSlot.PutStack(clickedSlot.TakeStack());
        }
        else
        {
            if (cursorSlot.HasItem && !clickedSlot.HasItem)
            {
                clickedSlot.PutStack(cursorSlot.TakeStack());
            }
            else if (cursorSlot.HasItem && clickedSlot.HasItem)
            {
                if (cursorSlot.ID != clickedSlot.ID)
                {
                    ItemStack oldCursorSlot = cursorSlot.TakeStack();
                    ItemStack oldSlot       = clickedSlot.TakeStack();

                    clickedSlot.PutStack(oldCursorSlot);
                    cursorSlot.PutStack(oldSlot);
                }
                else if (cursorSlot.Amount < cursorSlot.Size)
                {
                    int value = cursorSlot.Put(clickedSlot.Amount);

                    clickedSlot.Take(value);
                }
            }
        }
    }
    private void Update()
    {
        if (!uicontroller.IsInUI)
        {
            if (cursorSlot.HasItem)
            {
                //throw away*/
                cursorSlot.TakeStack();
            }

            return;
        }

        cursorSlot.transform.position = Input.mousePosition;

        if (Input.GetMouseButtonDown(0))
        {
            HandleSlotClick(CheckForSlot());
        }
    }
    private void ResultCase(UIItemSlot clickedSlot)
    {
        if (!cursorSlot.HasItem && clickedSlot.HasItem)
        {
            cursorSlot.PutStack(clickedSlot.TakeStack());

            clickedSlot.IsClicked = true;
        }
        else if (cursorSlot.HasItem && clickedSlot.HasItem &&
                 cursorSlot.ID == clickedSlot.ID &&
                 cursorSlot.Size - cursorSlot.Amount >= clickedSlot.Amount)
        {
            cursorSlot.Put(clickedSlot.Amount);
            clickedSlot.Take(clickedSlot.Amount);

            clickedSlot.IsClicked = true;
        }
    }