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); } }