private IEnumerator PlayGame() { while (!partidaCompleta) { sco.StartSampling(); if (ppasso) { CleanScene(); while (!scp.IsConnected && !scm.IsConnected && !scc.IsConnected) { passo = -1; TextPanel.SetActive(true); displayHowTo.text = "Nenhum dispositivo de controle conectado! Conecte e volte ao menu principal."; yield return(null); } // Se o PITACO estiver conectado if (scp.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scp.StartSampling(); scp.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValuePitaco <= Pacient.Loaded.PitacoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValuePitaco > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio, 1); yield return(null); } scp.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 3: FindObjectOfType <MinigameLogger>().WriteMinigameRound(1, finalScore[0], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 4: scp.StartSampling(); scp.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValuePitaco <= Pacient.Loaded.PitacoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValuePitaco > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio, 2); yield return(null); } scp.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 5: FindObjectOfType <MinigameLogger>().WriteMinigameRound(2, finalScore[1], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 6: scp.StartSampling(); scp.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValuePitaco <= Pacient.Loaded.PitacoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValuePitaco > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio, 3); yield return(null); } scp.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 7: FindObjectOfType <MinigameLogger>().WriteMinigameRound(3, finalScore[2], player.picoExpiratorio); TextPanel.SetActive(false); finalScoreMenu.DisplayFinalScore(finalScore[0], finalScore[1], finalScore[2]); finalScoreMenu.ToggleScoreMenu(); Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <MinigameLogger>().Save(GameDevice.Pitaco, RespiratoryExercise.ExpiratoryPeak, Minigame.CakeGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); player.picoExpiratorio = 0; partidaCompleta = true; break; } ppasso = false; } #region Other Controllers else { // Se o MANO estiver conectado if (scm.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scm.StartSampling(); scm.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueMano <= Pacient.Loaded.ManoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueMano > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio, 1); yield return(null); } scm.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 3: FindObjectOfType <MinigameLogger>().WriteMinigameRound(1, finalScore[0], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 4: scm.StartSampling(); scm.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueMano <= Pacient.Loaded.ManoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueMano > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio, 2); yield return(null); } scm.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 5: FindObjectOfType <MinigameLogger>().WriteMinigameRound(2, finalScore[1], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 6: scm.StartSampling(); scm.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueMano <= Pacient.Loaded.ManoThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueMano > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio, 3); yield return(null); } scm.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 7: FindObjectOfType <MinigameLogger>().WriteMinigameRound(3, finalScore[2], player.picoExpiratorio); TextPanel.SetActive(false); finalScoreMenu.DisplayFinalScore(finalScore[0], finalScore[1], finalScore[2]); finalScoreMenu.ToggleScoreMenu(); Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <MinigameLogger>().Save(GameDevice.Mano, RespiratoryExercise.ExpiratoryPeak, Minigame.CakeGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); player.picoExpiratorio = 0; partidaCompleta = true; break; } ppasso = false; } else { // Se o CINTA estiver conectado if (scc.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scc.StartSampling(); scc.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueCinta <= Pacient.Loaded.CintaThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueCinta > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio, 1); yield return(null); } scc.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 3: FindObjectOfType <MinigameLogger>().WriteMinigameRound(1, finalScore[0], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 4: scc.StartSampling(); scc.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueCinta <= Pacient.Loaded.CintaThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueCinta > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio, 2); yield return(null); } scc.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } break; case 5: FindObjectOfType <MinigameLogger>().WriteMinigameRound(2, finalScore[1], player.picoExpiratorio); RestauraVariaveis(); displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir"; break; case 6: scc.StartSampling(); scc.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValueCinta <= Pacient.Loaded.CintaThreshold && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValueCinta > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio, 3); yield return(null); } scc.StopSampling(); //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 7: FindObjectOfType <MinigameLogger>().WriteMinigameRound(3, finalScore[2], player.picoExpiratorio); TextPanel.SetActive(false); finalScoreMenu.DisplayFinalScore(finalScore[0], finalScore[1], finalScore[2]); finalScoreMenu.ToggleScoreMenu(); Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <MinigameLogger>().Save(GameDevice.Cinta, RespiratoryExercise.ExpiratoryPeak, Minigame.CakeGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); player.picoExpiratorio = 0; partidaCompleta = true; break; } ppasso = false; } } } #endregion } yield return(null); } sco.StopSampling(); }
//Incremental states(put them into the correct order) private IEnumerator PlayGame() { while (!finished) { sco.StartSampling(); while (!scp.IsConnected && !scm.IsConnected && !scc.IsConnected) { state = -1; TextPanel.SetActive(true); displayHowTo.text = "Nenhum dispositivo de controle conectado! Conecte e volte ao menu principal."; yield return(null); } // Se o PITACO estiver conectado if (scp.IsConnected) { switch (state) { case 1: //Introduction displayHowTo.text = "Bem-Vindo ao jogo do copo d'agua![ENTER]"; while (playable) { yield return(null); } playable = true; break; case 2: case 4: case 6: //Pre-flow TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] e INSPIRE \n o mais forte que conseguir dentro do tempo."; while (playable) { yield return(null); } CleanRound(); playable = true; TextPanel.SetActive(false); break; case 3: case 5: case 7: //Player's Flow scp.StartSampling(); scp.Recalibrate(); displayHowTo.text = ""; EnablePlayerFlow(true, _roundNumber); _roundNumber++; while (playable) { StartCountdown(); yield return(null); } scp.StopSampling(); ResetCountDown(); playable = true; break; case 8: TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] para visualizar sua pontuação."; break; case 9: Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <Core.MinigameLogger>().Save(GameDevice.Pitaco, RespiratoryExercise.InspiratoryPeak, Minigame.WaterGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); NotPlayable(); break; case 10: TextPanel.SetActive(false); ShowFinalScore(); break; case 99: TextPanel.SetActive(true); while (playable) { yield return(null); } playable = true; break; } } else { // Se o Mano estiver conectado if (scm.IsConnected) { switch (state) { case 1: //Introduction displayHowTo.text = "Bem-Vindo ao jogo do copo d'agua![ENTER]"; while (playable) { yield return(null); } playable = true; break; case 2: case 4: case 6: //Pre-flow TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] e INSPIRE \n o mais forte que conseguir dentro do tempo."; while (playable) { yield return(null); } CleanRound(); playable = true; TextPanel.SetActive(false); break; case 3: case 5: case 7: //Player's Flow scm.StartSampling(); scm.Recalibrate(); displayHowTo.text = ""; EnablePlayerFlow(true, _roundNumber); _roundNumber++; while (playable) { StartCountdown(); yield return(null); } scm.StopSampling(); ResetCountDown(); playable = true; break; case 8: TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] para visualizar sua pontuação."; break; case 9: Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <Core.MinigameLogger>().Save(GameDevice.Mano, RespiratoryExercise.InspiratoryPeak, Minigame.WaterGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); NotPlayable(); break; case 10: TextPanel.SetActive(false); ShowFinalScore(); break; case 99: TextPanel.SetActive(true); while (playable) { yield return(null); } playable = true; break; } } else { // Se a CINTA estiver conectada if (scc.IsConnected) { switch (state) { case 1: //Introduction displayHowTo.text = "Bem-Vindo ao jogo do copo d'agua![ENTER]"; while (playable) { yield return(null); } playable = true; break; case 2: case 4: case 6: //Pre-flow TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] e INSPIRE \n o mais forte que conseguir dentro do tempo."; while (playable) { yield return(null); } CleanRound(); playable = true; TextPanel.SetActive(false); break; case 3: case 5: case 7: //Player's Flow scc.StartSampling(); scc.Recalibrate(); displayHowTo.text = ""; EnablePlayerFlow(true, _roundNumber); _roundNumber++; while (playable) { StartCountdown(); yield return(null); } scc.StopSampling(); ResetCountDown(); playable = true; break; case 8: TextPanel.SetActive(true); displayHowTo.text = "Pressione [Enter] para visualizar sua pontuação."; break; case 9: Debug.Log("Saving minigame data..."); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(true); FindObjectOfType <Core.MinigameLogger>().Save(GameDevice.Cinta, RespiratoryExercise.InspiratoryPeak, Minigame.WaterGame); GameObject.Find("Canvas").transform.Find("SavingBgPanel").gameObject.SetActive(false); Debug.Log("Minigame logs saved."); NotPlayable(); break; case 10: TextPanel.SetActive(false); ShowFinalScore(); break; case 99: TextPanel.SetActive(true); while (playable) { yield return(null); } playable = true; break; } } } } yield return(null); } sco.StopSampling(); }
private IEnumerator PlayGame() { while (!partidaCompleta) { if (ppasso) { CleanScene(); while (!scp.IsConnected && !scm.IsConnected && !scc.IsConnected) { passo = -1; TextPanel.SetActive(true); displayHowTo.text = "Nenhum dispositivo de controle conectado! Conecte e volte ao menu principal."; yield return(null); } // Se o Pitaco estiver conectado if (scp.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scp.StartSampling(); scp.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.PitacoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 3: RestauraVariaveis(); break; case 4: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.PitacoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 5: RestauraVariaveis(); break; case 6: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.PitacoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.PitacoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; scp.StopSampling(); FindObjectOfType <PitacoLogger>().StopLogging(); break; } ppasso = false; } else //////////////////// // Se o Mano estiver conectado { if (scm.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scm.StartSampling(); scm.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.ManoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 3: RestauraVariaveis(); break; case 4: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.ManoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 5: RestauraVariaveis(); break; case 6: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.ManoThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.ManoThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; scm.StopSampling(); FindObjectOfType <ManoLogger>().StopLogging(); break; } ppasso = false; } else { // Se a Cinta Extensora estiver conectada if (scc.IsConnected) { switch (passo) { case 1: displayHowTo.text = "Pressione [Enter] e assopre o mais forte que conseguir dentro do tempo."; break; case 2: scc.StartSampling(); scc.Recalibrate(); displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.CintaThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[0] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 3: RestauraVariaveis(); break; case 4: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.CintaThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[1] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ir para a proxima rodada."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; break; case 5: RestauraVariaveis(); break; case 6: displayHowTo.text = ""; TextPanel.SetActive(false); while (player.sensorValue <= Pacient.Loaded.CintaThreshold * 2 && jogou) { yield return(null); } StopCountdown(); paraTempo = true; //saiu do 0 while (player.sensorValue > Pacient.Loaded.CintaThreshold && jogou) { FlowAction(player.picoExpiratorio); yield return(null); } //voltou pro 0 finalScoreMenu.pikeString[2] = player.picoExpiratorio.ToString(); TextPanel.SetActive(true); if (jogou) { displayHowTo.text = "Parabéns!\nPressione [Enter] para ver a sua pontuação."; SoundManager.Instance.PlaySound("Success"); } player.picoExpiratorio = 0; scc.StopSampling(); FindObjectOfType <CintaLogger>().StopLogging(); break; } ppasso = false; } } } //////////////////////////////////////// } yield return(null); } }
private IEnumerator Start() { _runStep = true; while (!_calibrationDone) { if (_runStep) { // Clear screen _enterButton.SetActive(false); DudeClearMessage(); // Wait to show next step yield return(new WaitForSeconds(0.7f)); switch (_currentExercise) { // case CalibrationExerciseMano.RespiratoryFrequency: // switch (_currentStep) // { // case 1: // DudeTalk("Você deve respirar somente pela boca. Não precisa morder o MANO. Mantenha o MANO sempre para baixo. Pressione (Enter) para continuar."); // SetupNextStep(); // break; // case 2: // DudeTalk($"Neste exercício, você deve RESPIRAR NORMALMENTE por {TimerRespFreq} segundos. Ao apertar (Enter), o relógio ficará verde para você começar o exercício."); // SetupNextStep(); // break; // case 3: // if (!_serialController.IsConnected) // { // SerialDisconnectedWarning(); // continue; // } // _capturedSamples.Clear(); // _serialController.StartSampling(); // yield return new WaitForSeconds(1f); // _dialogText.text = "(relaxe e RESPIRE NORMALMENTE)"; // AirFlowEnable(); // StartCoroutine(DisplayCountdown(TimerRespFreq)); // while (_flowWatch.ElapsedMilliseconds < TimerRespFreq * 1000) // yield return null; // AirFlowDisable(); // _flowMeter = FlowMath.RespiratoryRate(_capturedSamples, TimerRespFreq); // if (_flowMeter > RespiratoryFrequencyThreshold) // { // _calibrationLogger.Write(CalibrationExerciseResultMano.Success, _currentExercise, _flowMeter); // _tmpCapacities.RespiratoryRate = _flowMeter; // SetupNextStep(true); // continue; // } // else // { // _calibrationLogger.Write(CalibrationExerciseResultMano.Failure, _currentExercise, _flowMeter); // DudeWarnUnknownFlow(); // SetupStep(_currentStep); // break; // } // case 4: // SoundManager.Instance.PlaySound("Success"); // DudeTalk($"Sua média de frequência respiratória é de {(_tmpCapacities.RawRespRate * 60f):F} resp/min." + // " Pressione (Enter) para continuar com os outros exercícios."); // SetupNextStep(); // break; // case 5: // _calibrationOverviewSendDto.CalibrationValue = _tmpCapacities.RawRespRate; // _calibrationOverviewSendDto.Exercise = RespiratoryExercise.RespiratoryFrequency.GetDescription(); // Pacient.Loaded.CapacitiesMano.RespiratoryRate = _tmpCapacities.RawRespRate; // SaveAndQuit(); // break; // default: // FindObjectOfType<SceneLoader>().LoadScene(0); // break; // } // break; case CalibrationExerciseMano.InspiratoryPeak: switch (_currentStep) { case 1: DudeTalk("Neste exercício, você deve PUXAR O AR COM FORÇA. Serão 3 tentativas. Ao apertar (Enter), o relógio ficará verde para você começar o exercício."); SetupNextStep(); break; case 2: if (!_serialController.IsConnected) { SerialDisconnectedWarning(); continue; } _serialController.StartSampling(); _exerciseCountText.text = $"Exercício: {_currentExerciseCount + 1}/3"; yield return(new WaitForSeconds(1f)); AirFlowEnable(); StartCoroutine(DisplayCountdown(TimerPeakExercise)); _dialogText.text = "(PUXE O AR COM FORÇA 1 vez! E aguarde o próximo passo...)"; yield return(new WaitForSeconds(TimerPeakExercise)); AirFlowDisable(); var insCheck = _flowMeter; ResetFlowMeter(); if (insCheck < -Pacient.Loaded.ManoThreshold) { _calibrationLogger.Write(CalibrationExerciseResultMano.Success, _currentExercise, insCheck); _currentExerciseCount++; SetupNextStep(true); continue; } else { _calibrationLogger.Write(CalibrationExerciseResultMano.Failure, _currentExercise, insCheck); DudeWarnUnknownFlow(); SetupStep(_currentStep); break; } case 3: DudeCongratulate(); SetupStep(_currentExerciseCount == 3 ? _currentStep + 1 : _currentStep - 1); break; case 4: SoundManager.Instance.PlaySound("Success"); DudeTalk($"Sua pressão inspiratória é de {ManoFlowMath.ToCentimetersofWater(_tmpCapacities.RawInsPeakFlow):F} cmH2O." + " Pressione (Enter) para continuar com os outros exercícios."); SetupNextStep(); break; case 5: _calibrationOverviewSendDto.CalibrationValue = _tmpCapacities.RawInsPeakFlow; _calibrationOverviewSendDto.Exercise = RespiratoryExercise.InspiratoryPeak.GetDescription(); Pacient.Loaded.CapacitiesMano.InsPeakFlow = _tmpCapacities.RawInsPeakFlow; SaveAndQuit(); break; default: FindObjectOfType <SceneLoader>().LoadScene(0); break; } break; case CalibrationExerciseMano.InspiratoryDuration: switch (_currentStep) { case 1: DudeTalk("Neste exercício, MANTENHA o ponteiro GIRANDO, PUXANDO O AR! Serão 3 tentativas. Ao apertar (Enter), o relógio ficará verde para você começar o exercício."); SetupNextStep(); break; case 2: if (!_serialController.IsConnected) { SerialDisconnectedWarning(); continue; } _serialController.StartSampling(); _exerciseCountText.text = $"Exercício: {_currentExerciseCount + 1}/3"; yield return(new WaitForSeconds(1)); AirFlowEnable(false); _dialogText.text = "(MANTENHA o ponteiro GIRANDO, PUXANDO O AR!)"; var tmpThreshold = Pacient.Loaded.ManoThreshold; Pacient.Loaded.ManoThreshold = tmpThreshold * 0.25f; while (_flowMeter >= -Pacient.Loaded.ManoThreshold) { yield return(null); } _flowWatch.Restart(); while (_flowMeter < -Pacient.Loaded.ManoThreshold) { yield return(null); } AirFlowDisable(); ResetFlowMeter(); Pacient.Loaded.ManoThreshold = tmpThreshold; // Validate for player input if (_flowWatch.ElapsedMilliseconds > FlowTimeThreshold) { _calibrationLogger.Write(CalibrationExerciseResultMano.Success, _currentExercise, _flowWatch.ElapsedMilliseconds); if (_flowWatch.ElapsedMilliseconds > _tmpCapacities.InsFlowDuration) { _tmpCapacities.InsFlowDuration = _flowWatch.ElapsedMilliseconds; } _currentExerciseCount++; SetupNextStep(true); continue; } else { _calibrationLogger.Write(CalibrationExerciseResultMano.Failure, _currentExercise, _flowWatch.ElapsedMilliseconds); DudeWarnUnknownFlow(); SetupStep(_currentStep); break; } case 3: DudeCongratulate(); SetupStep(_currentExerciseCount == 3 ? _currentStep + 1 : _currentStep - 1); break; case 4: SoundManager.Instance.PlaySound("Success"); DudeTalk($"Seu tempo de inspiração máximo é de {(_tmpCapacities.RawInsFlowDuration / 1000f):F} segundos." + " Pressione (Enter) para continuar com os outros exercícios."); SetupNextStep(); break; case 5: _calibrationOverviewSendDto.CalibrationValue = _tmpCapacities.RawInsFlowDuration; _calibrationOverviewSendDto.Exercise = RespiratoryExercise.InspiratoryDuration.GetDescription(); Pacient.Loaded.CapacitiesMano.InsFlowDuration = _tmpCapacities.RawInsFlowDuration; SaveAndQuit(); break; default: FindObjectOfType <SceneLoader>().LoadScene(0); break; } break; case CalibrationExerciseMano.ExpiratoryPeak: switch (_currentStep) { case 1: DudeTalk("Neste exercício, você deve ASSOPRAR FORTE. Serão 3 tentativas. Ao apertar (Enter), o relógio ficará verde para você começar o exercício."); SetupNextStep(); break; case 2: if (!_serialController.IsConnected) { SerialDisconnectedWarning(); continue; } _serialController.StartSampling(); _exerciseCountText.text = $"Exercício: {_currentExerciseCount + 1}/3"; yield return(new WaitForSeconds(1)); AirFlowEnable(); StartCoroutine(DisplayCountdown(TimerPeakExercise)); _dialogText.text = "(ASSOPRE FORTE 1 vez! E aguarde o próximo passo...)"; // Wait for player input yield return(new WaitForSeconds(TimerPeakExercise)); AirFlowDisable(); var expCheck = _flowMeter; ResetFlowMeter(); if (expCheck > Pacient.Loaded.ManoThreshold) { _calibrationLogger.Write(CalibrationExerciseResultMano.Success, _currentExercise, expCheck); _currentExerciseCount++; SetupNextStep(true); continue; } else { _calibrationLogger.Write(CalibrationExerciseResultMano.Failure, _currentExercise, expCheck); DudeWarnUnknownFlow(); SetupStep(_currentStep); break; } case 3: DudeCongratulate(); SetupStep(_currentExerciseCount == 3 ? _currentStep + 1 : _currentStep - 1); break; case 4: SoundManager.Instance.PlaySound("Success"); DudeTalk($"Sua pressão expiratório é de {ManoFlowMath.ToCentimetersofWater(_tmpCapacities.RawExpPeakFlow):F} cmH2O." + " Pressione (Enter) para continuar com os outros exercícios."); SetupNextStep(); break; case 5: _calibrationOverviewSendDto.CalibrationValue = _tmpCapacities.RawExpPeakFlow; _calibrationOverviewSendDto.Exercise = RespiratoryExercise.ExpiratoryPeak.GetDescription(); Pacient.Loaded.CapacitiesMano.ExpPeakFlow = _tmpCapacities.RawExpPeakFlow; SaveAndQuit(); break; default: FindObjectOfType <SceneLoader>().LoadScene(0); break; } break; case CalibrationExerciseMano.ExpiratoryDuration: switch (_currentStep) { case 1: DudeTalk("Neste exercício, MANTENHA o ponteiro GIRANDO, ASSOPRANDO! Serão 3 tentativas. Ao apertar (Enter), o relógio ficará verde para você começar o exercício."); SetupNextStep(); break; case 2: if (!_serialController.IsConnected) { SerialDisconnectedWarning(); continue; } _serialController.StartSampling(); _exerciseCountText.text = $"Exercício: {_currentExerciseCount + 1}/3"; yield return(new WaitForSeconds(1)); AirFlowEnable(false); _dialogText.text = "(MANTENHA o ponteiro GIRANDO, ASSOPRANDO!)"; var tmpThreshold = Pacient.Loaded.ManoThreshold; Pacient.Loaded.ManoThreshold = tmpThreshold * 0.25f; //this helps the player expel all his air // Wait for player input to be greather than threshold while (_flowMeter <= Pacient.Loaded.ManoThreshold) { yield return(null); } _flowWatch.Restart(); while (_flowMeter > Pacient.Loaded.ManoThreshold) { yield return(null); } AirFlowDisable(); ResetFlowMeter(); Pacient.Loaded.ManoThreshold = tmpThreshold; // Validate for player input if (_flowWatch.ElapsedMilliseconds > FlowTimeThreshold) { _calibrationLogger.Write(CalibrationExerciseResultMano.Success, _currentExercise, _flowWatch.ElapsedMilliseconds); if (_flowWatch.ElapsedMilliseconds > _tmpCapacities.ExpFlowDuration) { _tmpCapacities.ExpFlowDuration = _flowWatch.ElapsedMilliseconds; } _currentExerciseCount++; SetupNextStep(true); continue; } else { _calibrationLogger.Write(CalibrationExerciseResultMano.Failure, _currentExercise, _flowWatch.ElapsedMilliseconds); DudeWarnUnknownFlow(); SetupStep(_currentStep); break; } case 3: DudeCongratulate(); SetupStep(_currentExerciseCount == 3 ? _currentStep + 1 : _currentStep - 1); break; case 4: SoundManager.Instance.PlaySound("Success"); DudeTalk($"Seu tempo de fluxo expiratório máximo é de {(_tmpCapacities.RawExpFlowDuration / 1000f):F} segundos." + " Pressione (Enter) para continuar com os outros exercícios."); SetupNextStep(); break; case 5: _calibrationOverviewSendDto.CalibrationValue = _tmpCapacities.RawExpFlowDuration; _calibrationOverviewSendDto.Exercise = RespiratoryExercise.ExpiratoryDuration.GetDescription(); Pacient.Loaded.CapacitiesMano.ExpFlowDuration = _tmpCapacities.RawExpFlowDuration; SaveAndQuit(); break; default: ReturnToMainMenu(); break; } break; } _enterButton.SetActive(true); _runStep = false; } yield return(null); } }