IEnumerator Start() { //intro input.isLocked = true; animator.Play(takeStart); while (animator.isPlaying) { yield return(null); } var parmDlg = new M8.GenericParams(); //start dialog for (int i = 0; i < dialogsBegin.Length; i++) { dialogsBegin[i].Show(parmDlg); while (dialogsBegin[i].isShowing) { yield return(null); } } parmDlg.Clear(); // //prepare animation animator.Play(takePrepare); while (animator.isPlaying) { yield return(null); } //init play GenerateQuestions(); mCurScore = 0; HUD.instance.SetMissionActive(true); HUD.instance.SetTimeActive(false); HUD.instance.UpdateScore(mCurScore, mCurScore); //play while (mCurQuestionIndex < mQuestions.Length) { mIncorrectCounter = 0; var question = curQuestion; //deck entry animator.Play(takeDeckEnter); while (animator.isPlaying) { yield return(null); } //populate deck PopulateDeck(); //dock SetupDock(); //question dialog parmDlg[ModalDialog.parmStringRefs] = new string[] { curQuestion.questionStringRef }; parmDlg[ModalDialog.parmPauseOverride] = false; M8.UIModal.Manager.instance.ModalOpen(modalQuestion, parmDlg); parmDlg.Clear(); // input.isLocked = false; //wait for anchors to be filled while (mAvailableAnchors.Count > 0) { yield return(null); if (mIsAnswerPicked) { input.isLocked = true; yield return(null); yield return(null); mIsAnswerPicked = false; input.isLocked = false; } } input.isLocked = true; M8.UIModal.Manager.instance.ModalCloseUpTo(modalQuestion, true); //deck exit ClearDeck(); animator.Play(takeDeckExit); while (animator.isPlaying) { yield return(null); } bool isResultEnterPlayed = false; //results dialog if (!string.IsNullOrEmpty(curQuestion.resultStringRef)) { //move to an appropriate position animator.Play(takeQuestionResultEnter); isResultEnterPlayed = true; parmDlg[ModalDialog.parmStringRefs] = new string[] { curQuestion.resultStringRef }; parmDlg[ModalDialog.parmPauseOverride] = false; M8.UIModal.Manager.instance.ModalOpen(modalPostQuestion, parmDlg); while (M8.UIModal.Manager.instance.isBusy || M8.UIModal.Manager.instance.ModalIsInStack(modalPostQuestion)) { yield return(null); } parmDlg.Clear(); } else { yield return(new WaitForSeconds(1f)); } // ClearDock(); //next mCurQuestionIndex++; //show multi question dialog explanation if (mCurQuestionIndex == mQuestionMultiStartIndex) { dialogMultiQuestionBegin.Show(parmDlg); while (dialogMultiQuestionBegin.isShowing) { yield return(null); } parmDlg.Clear(); } //move back if (isResultEnterPlayed) { //in case dialog was ended quickly while (animator.isPlaying) { yield return(null); } animator.Play(takeQuestionResultExit); while (animator.isPlaying) { yield return(null); } } yield return(null); } ClearDock(); //end input.isLocked = true; StartCoroutine(DoVictoryMusic()); animator.Play(takeEndPrepare); while (animator.isPlaying) { yield return(null); } //end dialog for (int i = 0; i < dialogsEnd.Length; i++) { dialogsEnd[i].Show(parmDlg); while (dialogsEnd[i].isShowing) { yield return(null); } } parmDlg.Clear(); // animator.Play(takeEnd); if (takeEndWait) { while (animator.isPlaying) { if (Input.anyKeyDown) { animator.GotoFrame(takeEndSkipFrame); break; } yield return(null); } } parmDlg[ModalStartFinish.parmMaxScore] = mMaxScore; M8.UIModal.Manager.instance.ModalOpen(modalProceed, parmDlg); }