예제 #1
0
    /// <summary>
    /// Called on touch/mouse moved; performs swap of board items.
    /// </summary>
    /// <param name='position'>Touch/mouse position.</param>
    void MyMouseMove(Vector2 position)
    {
        if (!selObj1)
        {
            return;
        }

        Vector2 dragVec = position - dragOrigin;

        if (dragVec.sqrMagnitude >= dragLength * dragLength)
        {
            // Drag detected, perform item swap.
            int x1 = selObj1.X;
            int y1 = selObj1.Y;

            int x2 = x1;
            int y2 = y1;

            DragDirection dir = GetDragDirFromVec(dragVec);

            switch (dir)
            {
            case DragDirection.Left:
                x2--;
                break;

            case DragDirection.Right:
                x2++;
                break;

            case DragDirection.Up:
                y2++;
                break;

            case DragDirection.Down:
                y2--;
                break;
            }

            if (x2 >= 0 && x2 < boardSizeX && y2 >= 0 && y2 < boardSizeY)
            {
                selObj2 = boardAll[x2, y2];

                // Start swap animation.
                selObj1.AnimateMove(selObj2.transform.position, swapAnimSpeed);
                selObj2.AnimateMove(selObj1.transform.position, swapAnimSpeed);

                gameState = GameState.MoveCheck;
            }

            selObj1.ResetColor();
        }
    }