IEnumerator Tutorial() { TutorialText tText = GameObject.Find("TutorialText").GetComponentInChildren <TutorialText> (); gridPlaces[60].hexaCube.SlowSpawn(Constants.ChooseColor(2)); gridPlaces[59].hexaCube.SlowSpawn(Constants.ChooseColor(2)); gridPlaces[58].hexaCube.SlowSpawn(Constants.ChooseColor(0)); gridPlaces[57].hexaCube.SlowSpawn(Constants.ChooseColor(2)); gridPlaces[56].hexaCube.SlowSpawn(Constants.ChooseColor(0)); gridPlaces[55].hexaCube.SlowSpawn(Constants.ChooseColor(0)); gridPlaces[54].hexaCube.SlowSpawn(Constants.ChooseColor(0)); colorSelector.Init(0, 3); colorSelector.DisableSwap(); startScore = 0; targetScore = 4000; bool passed = false; int failcount = 0; canFlood = true; canDestroy = false; yield return(StartCoroutine(ShowWaitTap(tText, "welcome to hexciter", "(tap to continue)"))); while (!passed) { flooded = false; destroyed = false; yield return(StartCoroutine(tText.Show("press and hold the center hex", ""))); yield return(StartCoroutine(WaitForCenterSelect())); yield return(StartCoroutine(tText.Hide())); colorSelector.GetComponentInChildren <TutorialArrow> ().FadeIn(); yield return(StartCoroutine(tText.Show("swipe left to flood", "this uses the color shown here"))); yield return(StartCoroutine(WaitForMoveCenter())); colorSelector.GetComponentInChildren <TutorialArrow> ().FadeOut(); disabled = true; //Check if they're purposefully failing if (failcount > 4) { break; } if (!flooded) { //did the wrong move if (destroyed) { failcount++; } yield return(StartCoroutine(tText.Hide())); continue; } //Player flooded passed = true; } if (!passed) { StartCoroutine(FailInstructions()); yield break; } yield return(StartCoroutine(tText.Hide())); yield return(StartCoroutine(ShowWaitTap(tText, "well done!", "the hexes changed color"))); colorSelector.GetComponentInChildren <TutorialArrow> ().FadeIn(); yield return(StartCoroutine(ShowWaitTap(tText, "you'll always flood using this color", "(tap to continue)"))); yield return(StartCoroutine(tText.Show("tap the palette to swap colors", ""))); colorSelector.EnableSwap(); yield return(StartCoroutine(WaitForSwap())); colorSelector.DisableSwap(); yield return(StartCoroutine(tText.Hide())); colorSelector.GetComponentInChildren <TutorialArrow> ().FadeOut(); passed = false; canFlood = false; canDestroy = true; while (!passed) { flooded = false; destroyed = false; yield return(StartCoroutine(tText.Show("press and hold the center hex", ""))); yield return(StartCoroutine(WaitForCenterSelect())); yield return(StartCoroutine(tText.Hide())); yield return(StartCoroutine(tText.Show("swipe right to destroy!", ""))); yield return(StartCoroutine(WaitForMoveCenter())); disabled = true; //Check if they're purposefully failing if (failcount > 4) { break; } if (!destroyed) { //did the wrong move if (flooded) { failcount++; } yield return(StartCoroutine(tText.Hide())); continue; } //Player destroyed passed = true; } if (!passed) { StartCoroutine(FailInstructions()); yield break; } yield return(StartCoroutine(tText.Hide())); yield return(StartCoroutine(ShowWaitTap(tText, "destroying hexes earns points", "match the color palette to earn bonus points!"))); GameObject.Find("GUICamera/MiddleRight").GetComponentInChildren <TutorialArrow> ().FadeIn(); yield return(StartCoroutine(ShowWaitTap(tText, "as you earn points, this bar fills", "(tap to continue)"))); GameObject.Find("GUICamera/MiddleRight").GetComponentInChildren <TutorialArrow> ().FadeOut(); GameObject.Find("GUICamera/MoveProgress/tutorialArrow1").GetComponent <TutorialArrow> ().FadeIn(); yield return(StartCoroutine(ShowWaitTap(tText, "each turn uses a grey hex", "(tap to continue)"))); yield return(StartCoroutine(ShowWaitTap(tText, "fill the bar before you use them all!", "(tap to continue)"))); GameObject.Find("GUICamera/MoveProgress/tutorialArrow1").GetComponent <TutorialArrow> ().FadeOut(); for (int i = 0; i < 54; i++) { gridPlaces[i].hexaCube.SlowSpawn(Constants.RandomColor()); } for (int i = 0; i < 6; i++) { moves.DoMove(); } //GameObject.Find ("GUICamera/MoveProgress/tutorialArrow2").GetComponent<TutorialArrow> ().FadeIn (); yield return(StartCoroutine(tText.Show("try making a move yourself", "you have one turn left"))); disabled = false; flooded = false; destroyed = false; colorSelector.EnableSwap(); targetScore = 8000; yield return(StartCoroutine(WaitForMove())); //GameObject.Find ("GUICamera/MoveProgress/tutorialArrow2").GetComponent<TutorialArrow> ().FadeOut (); while (GridBusy()) { yield return(new WaitForSeconds(0.1f)); } StartCoroutine(NextLevel()); while (GridBusy()) { yield return(new WaitForSeconds(0.1f)); } yield return(StartCoroutine(tText.Hide())); disabled = true; colorSelector.DisableSwap(); yield return(StartCoroutine(ShowWaitTap(tText, "you ran out of turns", "before the score bar was filled"))); yield return(StartCoroutine(ShowWaitTap(tText, "when the board is empty...", "it's gameover!"))); yield return(StartCoroutine(ShowWaitTap(tText, "now you're ready to play!", "(tap to start the game)"))); SocialManager.Instance.UnlockAchievement("hello world"); FadeCam.Instance.FadeOut(() => { Application.LoadLevel("game"); }); }