コード例 #1
0
ファイル: GameGrid.cs プロジェクト: hanoelleb/ThreeInARow
    public void setCurrent(gameTile update)
    {
        if (current != null)
        {
            int currIndex = current.getIndex();
            int upIndex   = update.getIndex();

            bool isAdjacent = false;

            if ((upIndex == currIndex + 1 && upIndex % GRIDSIZE != 0) ||              //to right
                (upIndex == currIndex - 1 && upIndex % GRIDSIZE != 5) ||              //to left
                (upIndex == currIndex - GRIDSIZE || upIndex == currIndex + GRIDSIZE)) //top or bottom
            {
                isAdjacent = true;
                current.setSelected(false);
                current = null;
            }

            if (!isAdjacent)
            {
                current.setSelected(false);
                current = update;
                current.setSelected(true);
            }
            else
            {
                Gem currGem = gameGrid[currIndex].getGem();
                Gem upGem   = gameGrid[upIndex].getGem();

                Transform currGemTrans = gameGrid[currIndex].getGemTransform();
                Transform upGemTrans   = gameGrid[upIndex].getGemTransform();

                currGemTrans.parent = gameGrid[upIndex].gameObject.transform;
                upGemTrans.parent   = gameGrid[currIndex].gameObject.transform;

                gemSwap.Play();

                gameGrid[upIndex].setGem(currGem);
                gameGrid[currIndex].setGem(upGem);

                HashSet <int> matches = checkBoard(false);
                if (matches.Count == 0)
                {
                    StartCoroutine(NoMatchCoroutine(currIndex, upIndex));
                }
                else
                {
                    StartCoroutine(MoveDownCoroutine());
                }
            }
        }
        else
        {
            current = update;
            current.setSelected(true);
        }
    }