Пример #1
0
 public void ToggleSelectVisibility(Lane.LaneType lt, bool b)
 {
     if (b)
     {
         if (Lane.LaneType.Row == lt)
         {
             rowSelect.SetActive(b);
         }
         else
         {
             columnSelect.SetActive(b);
         }
     }
     else
     {
         rowSelect.SetActive(b);
         columnSelect.SetActive(b);
     }
 }
Пример #2
0
    void OnTouchMove()
    {
        if (NoPossibleCurrentPickSelected())
        {
            return;
        }

        if (gameplayScript.IsGameOver)
        {
            return;
        }

        Vector2 pos = InputScript.GetTouchPositionWorldSpace();

        RaycastHit2D[] hits = Physics2D.RaycastAll(pos, Vector2.zero);

        bMouseCoordsNow = true;
        vMouseCoordsNow = pos;

        float dist       = Vector3.Distance(vMouseCoordsNow, vMouseCoordsOnClick);
        float dotProduct = Vector3.Dot(Vector3.right, (vMouseCoordsNow - vMouseCoordsOnClick).normalized);

        if (!bCurrentPickTypeLocked && dist >= deadzone)
        {
            float absDotProduct = Mathf.Abs(dotProduct);

            if (absDotProduct >= 0.5)
            {
                currentPickType = Lane.LaneType.Columns;
            }
            else
            {
                currentPickType = Lane.LaneType.Row;
            }

            //find current pick
            for (int i = 0; i < possibleCurrentPick.Length; i++)
            {
                if (possibleCurrentPick[i].laneType == currentPickType)
                {
                    currentPick = possibleCurrentPick[i];
                }
            }

            if (currentPickType == Lane.LaneType.Row)
            {
                DotScript dot = GetDotAtXY(0, currentPick.id);
                dot.ToggleSelectVisibility(currentPickType, true);
            }
            else
            {
                DotScript dot = GetDotAtXY(currentPick.id, 0);
                dot.ToggleSelectVisibility(currentPickType, true);
            }

            bCurrentPickTypeLocked = true;
        }

        if (!currentPick)
        {
            return;
        }

        // find possible drop
        for (int i = 0; i < hits.Length; i++)
        {
            Lane possibleDrop = hits[i].collider.GetComponent <Lane>();
            if (possibleDrop.laneType == currentPickType)
            {
                currentDrop = possibleDrop;
            }
        }

        if (possibleDropId != currentDrop.id)
        {
            possibleDropId = currentDrop.id;

            if (currentPick.id < currentDrop.id)
            {
                for (int j = currentDrop.id; currentPick.id < j; j--)
                {
                    if (currentPickType == Lane.LaneType.Columns)
                    {
                        MoveColumn(j, j - 1);
                    }
                    else
                    {
                        MoveRow(j, j - 1);
                    }
                }
            }
            else if (currentPick.id > currentDrop.id)
            {
                for (int j = currentDrop.id; j < currentPick.id; j++)
                {
                    if (currentPickType == Lane.LaneType.Columns)
                    {
                        MoveColumn(j, j + 1);
                    }
                    else
                    {
                        MoveRow(j, j + 1);
                    }
                }
            }

            if (currentPickType == Lane.LaneType.Columns)
            {
                MoveColumn(currentPick.id, currentDrop.id);
            }
            else
            {
                MoveRow(currentPick.id, currentDrop.id);
            }

            foreach (DotScript dot in dots)
            {
                dot.SwapName();
            }

            UpdateConnections();
        }

        // update current pick
        for (int i = 0; i < hits.Length; i++)
        {
            possibleCurrentPick[i] = hits[i].collider.GetComponent <Lane>();
        }

        // find current pick
        for (int i = 0; i < possibleCurrentPick.Length; i++)
        {
            if (possibleCurrentPick[i].laneType == currentPickType)
            {
                currentPick = possibleCurrentPick[i];
            }
        }

        touchPoint.transform.position = new Vector3(pos.x, pos.y, 0.0f);
    }