OneOfAdjacents() public method

Check if the given adjacent index is one of the Adjacents or Not.
public OneOfAdjacents ( int adjacentIndex ) : bool
adjacentIndex int an Adjacent index.
return bool
Ejemplo n.º 1
0
    /// <summary>
    /// When a click(touch) moved over the GridCell.
    /// </summary>
    private void GridCellClickMoved()
    {
        if (currentLine == null)
        {
            Debug.Log("Current Line is undefined");
            return;
        }

        if (currentGridCell == null)
        {
            Debug.Log("Current GridCell is undefined");
            return;
        }

        if (previousGridCell == null)
        {
            Debug.Log("Previous GridCell is undefined");
            return;
        }

        if (currentGridCell.index == previousGridCell.index)
        {
            return;
        }

        ///If the current grid cell is not adjacent of the previous grid cell,then ignore it
        if (!previousGridCell.OneOfAdjacents(currentGridCell.index))
        {
            Debug.Log("Current grid cell of index " + currentGridCell.index + " is Ignored [Reason : Not Adjacent Of Previous GridCell " + previousGridCell.index);
            return;
        }

        ///If the current grid cell is currently used
        if (currentGridCell.currentlyUsed)
        {
            if (currentGridCell.gridLineIndex == -1)
            {
                return;
            }

            if (currentGridCell.gridLineIndex == previousGridCell.gridLineIndex)
            {
                gridLines [currentGridCell.gridLineIndex].RemoveElements(currentGridCell.index);
                previousGridCell = currentGridCell;
                Debug.Log("Remove some Elements from the Line Path of index " + currentGridCell.gridLineIndex);
                ///Increase the movements counter
                IncreaseMovements();
                return;                //skip next
            }
            else
            {
                Debug.Log("Clear the Line Path of index " + currentGridCell.gridLineIndex);
                gridLines [currentGridCell.gridLineIndex].ClearPath();
            }
        }

        ///If the current grid cell is not empty or it's not a partner of the previous grid cell
        if (!currentGridCell.isEmpty && currentGridCell.index != previousGridCell.tragetIndex)
        {
            Debug.Log("Current grid cell of index " + currentGridCell.index + " is Ignored [Reason : Not the wanted Traget]");
            return;            //skip next
        }

        ///Increase the movements counter
        IncreaseMovements();

        ///Setting up the attributes for the current grid cell
        currentGridCell.currentlyUsed = true;
        currentGridCell.gridLineIndex = previousGridCell.gridLineIndex;
        if (currentGridCell.gridLineIndex == -1)
        {
            return;
        }
        if (currentGridCell.isEmpty)
        {
            currentGridCell.tragetIndex = previousGridCell.tragetIndex;
        }

        ///Link the color of top background of the current grid cell with the top background color of the previous grid cell
        currentGridCell.topBackgroundColor = previousGridCell.topBackgroundColor;

        Debug.Log("New GridCell of Index " + currentGridCell.index + " added to the Line Path of index " + currentLine.index);

        ///Add the current grid cell index to the current traced grid cells list
        currentLine.path.Add(currentGridCell.index);

        ///Determine the New Line Point
        tempPoint   = currentGridCell.transform.position;
        tempPoint.z = gridLineZPosition;

        ///Add the position of the New Line Point to the current line
        gridLines [currentGridCell.gridLineIndex].AddPoint(tempPoint);

        bool playBubble = true;

        if (!currentGridCell.isEmpty)
        {
            //Two pairs connected
            if (previousGridCell.tragetIndex == currentGridCell.index)
            {
                Debug.Log("Two GridCells connected [GridCell " + (gridLines [currentGridCell.gridLineIndex].GetFirstPathElement()) + " with GridCell " + (gridLines [currentGridCell.gridLineIndex].GetLastPathElement()) + "]");
                currentLine.completedLine = true;
                GridCell gridCell = null;
                for (int i = 0; i < currentLine.path.Count; i++)
                {
                    gridCell = gridCells [currentLine.path [i]];

                    if (i == 0 || i == currentLine.path.Count - 1)
                    {
                        //Setting up the connect pairs
                        GameObjectUtil.FindChildByTag(gridCell.transform, "GridCellContent").GetComponent <SpriteRenderer> ().sprite = currentLevel.dotsPairs [gridCell.elementPairIndex].connectSprite;
                    }
                    ///Setting up the color of the top background of the grid cell
                    tempColor                 = previousGridCell.topBackgroundColor;
                    tempColor.a               = gridCellTopBackgroundAlpha;
                    tempSpriteRendererd       = gridCell.transform.Find("background").GetComponent <SpriteRenderer> ();
                    tempSpriteRendererd.color = tempColor;
                    ///Enable the top backgroud of the grid cell
                    tempSpriteRendererd.enabled = true;
                }

                ///Play the connected sound effect at the center of the unity world
                AudioSource.PlayClipAtPoint(connectedSFX, Vector3.zero, effectsAudioSource.volume);
                playBubble = false;
                Release(null);

                //检查是否过关
                CheckLevelComplete();
                return;
            }
        }
        if (playBubble)
        {
            ///Play the water buttle sound effect at the center of the unity world
            AudioSource.PlayClipAtPoint(waterBubbleSFX, Vector3.zero, effectsAudioSource.volume);
        }
        previousGridCell = currentGridCell;
    }