bool checkMatch() { List <int> xMatches = new List <int> (); List <int> yMatches = new List <int> (); for (int i = 0; i < 15; i++) { totalsTile bottom = GameController.getTotalTile(i, 0); totalsTile right = GameController.getTotalTile(i, 2); if (bottom.currentValue == bottom.currentTarget) { xMatches.Add(i); } if (right.currentValue == right.currentTarget) { yMatches.Add(i); } } foreach (var xM in xMatches) { for (int i = 0; i < 15; i++) { gridTile g = GameController.getTileAt(xM, i); g.empty = true; g.currentValue = 0; GameObject clearGO = GameController.getTileGO(g); tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> (); clearCtrl.MousedOut(); clearCtrl.returnTextColour(); } for (int i = 0; i < 8; i++) { //Instantiate laser animations if (i == 0) { Vector3 pos = new Vector3(xM, 7); GameObject CentreLaser = (GameObject)Instantiate( centreLaserPrefab, pos, Quaternion.identity, this.transform ); Animator LaserAnimator = CentreLaser.GetComponent <Animator>(); LaserAnimator.Play("centreLaser"); Destroy(CentreLaser, 0.6f); } else { Vector3 pos1 = new Vector3(xM, 7 + i); Vector3 pos2 = new Vector3(xM, 7 - i); GameObject Laser1 = (GameObject)Instantiate( centreLaserPrefab, pos1, Quaternion.identity, this.transform ); GameObject Laser2 = (GameObject)Instantiate( centreLaserPrefab, pos2, Quaternion.identity, this.transform ); Animator Laser1Animator = Laser1.GetComponent <Animator>(); Laser1Animator.Play("centreLaser"); Animator Laser2Animator = Laser2.GetComponent <Animator>(); Laser2Animator.Play("centreLaser"); Destroy(Laser1, 0.6f); Destroy(Laser2, 0.6f); } } totalsTile bottom = GameController.getTotalTile(xM, 0); totalsTile top = GameController.getTotalTile(xM, 1); bottom.currentTarget = bottom.currentTarget * 2; top.currentTarget = bottom.currentTarget; bottom.currentValue = 0; top.currentValue = 0; GameObject bGO = GameController.getTotalsGO(bottom); GameObject tGO = GameController.getTotalsGO(top); tileObjectController bController = bGO.GetComponent <tileObjectController> (); tileObjectController tController = tGO.GetComponent <tileObjectController> (); bController.updateTileValue(bottom.currentTarget.ToString()); tController.updateTileValue(bottom.currentTarget.ToString()); if (yMatches.Count > 0) { GameController.score += bottom.currentTarget; Text scoreText = GameController.scoreText; scoreText.text = "Score: " + GameController.score.ToString(); } else { GameController.score += bottom.currentTarget / 2; Text scoreText = GameController.scoreText; scoreText.text = "Score: " + GameController.score.ToString(); } } foreach (var yM in yMatches) { for (int i = 0; i < 15; i++) { gridTile g = GameController.getTileAt(i, yM); g.empty = true; g.currentValue = 0; GameObject clearGO = GameController.getTileGO(g); tileObjectController clearCtrl = clearGO.GetComponent <tileObjectController> (); clearCtrl.MousedOut(); clearCtrl.returnTextColour(); } for (int i = 0; i < 8; i++) { //Instantiate laser animations if (i == 0) { Vector3 pos = new Vector3(7, yM); GameObject CentreLaser = (GameObject)Instantiate( centreLaserPrefab, pos, Quaternion.identity, this.transform ); Animator LaserAnimator = CentreLaser.GetComponent <Animator>(); LaserAnimator.Play("centreLaser"); //LaserAnimator.StartPlayback (); Destroy(CentreLaser, 0.6f); } else { Vector3 pos1 = new Vector3(7 + i, yM); Vector3 pos2 = new Vector3(7 - i, yM); GameObject Laser1 = (GameObject)Instantiate( centreLaserPrefab, pos1, Quaternion.identity, this.transform ); GameObject Laser2 = (GameObject)Instantiate( centreLaserPrefab, pos2, Quaternion.identity, this.transform ); Animator Laser1Animator = Laser1.GetComponent <Animator>(); Laser1Animator.Play("centreLaser"); Animator Laser2Animator = Laser2.GetComponent <Animator>(); Laser2Animator.Play("centreLaser"); Destroy(Laser1, 0.6f); Destroy(Laser2, 0.6f); } } totalsTile right = GameController.getTotalTile(yM, 2); totalsTile left = GameController.getTotalTile(yM, 3); right.currentTarget = right.currentTarget * 2; left.currentTarget = right.currentTarget; right.currentValue = 0; left.currentValue = 0; GameObject rGO = GameController.getTotalsGO(right); GameObject lGO = GameController.getTotalsGO(left); tileObjectController rController = rGO.GetComponent <tileObjectController> (); tileObjectController lController = lGO.GetComponent <tileObjectController> (); rController.updateTileValue(right.currentTarget.ToString()); lController.updateTileValue(right.currentTarget.ToString()); if (xMatches.Count > 0) { GameController.score += right.currentTarget; Text scoreText = GameController.scoreText; scoreText.text = "Score: " + GameController.score.ToString(); } else { GameController.score += right.currentTarget / 2; Text scoreText = GameController.scoreText; scoreText.text = "Score: " + GameController.score.ToString(); } } if (xMatches.Count > 0 || yMatches.Count > 0) { //Debug.Log (xMatches.Count + ", " + yMatches.Count); return(true); } return(false); }