private void OnStateChange() { if (_currState == GameState.None) { return; } _arRappiMenu.SetActiveSearchTarget(_currState == GameState.Searching_Target); switch (_currState) { case GameState.Searching_Target: { // Interfaz buscando marcador _arRappiMenu.SetActiveWaitInitGame(false); break; } case GameState.Waiting_Initialize: { // Mostrar interfaz: // + Boton "iniciar juego" _arRappiMenu.SetActiveWaitInitGame(true); break; } case GameState.Starting: { _arRappiMenu.SetActiveWaitInitGame(false); // Iniciar secuencia "Esconder mochila" SequenceControl currSeq = _sequenceControls.SingleOrDefault((s) => s.gameStateSequence == CurrState); if (currSeq == null) { CurrState = GameState.Playing; return; } currSeq.StartSequence(() => { // Secuencia finalizada CurrState = GameState.Playing; }); break; } case GameState.Playing: { // El juego no se reinicia si el juego estuvo en pausa // Esto se maneja desde el metodo PauseGame if (_lastState == GameState.Searching_Target) { if (PepitoMinigameControl.Instance.IsFinishAllMoves()) { // Activar menu en caso de que el juego haya finalizado los movimientos _arRappiMenu.SetActiveSelectorContainer(true); } return; } // Iniciar juego "Revolver contenedores" PepitoMinigameControl.Instance.InitGame(); break; } case GameState.Finishing: { _arRappiMenu.SetActiveSelectorContainer(false); // Indicar si ganó o perdió a traves de las secuencias // + Iniciar secuencia "Levantar contenedor escogido" // ++ Correcto: // -- Iniciar secuencia "Mostrar premio" // -- Interfaz al finalizar secuencia // ++ Incorrecto: // -- Iniciar secuencia "Incorrecto" // -- Interfaz al finalizar secuencia SequenceControl currSeq = _sequenceControls.SingleOrDefault((s) => s.gameStateSequence == CurrState); if (currSeq == null) { CurrState = GameState.Game_Over; return; } // No realizar nuevamente la secuencia si se ha pausado el juego. if (_lastState == GameState.Searching_Target) { // Activar interfaz si la secuencia ha finalizado if (currSeq.IsFinished) { // Activar interfaz en caso de finalizada la secuencia _arRappiMenu.SetActiveMessage(true); _arRappiMenu.SetActiveFinishGame(true); _arRappiMenu.SetActiveCelebration((bool)IsPlayerWinner); } return; } currSeq.StartSequence(() => { // Secuencia finalizada //CurrState = GameState.Game_Over; _arRappiMenu.SetActiveFinishGame(true); }); break; } case GameState.Game_Over: { // Indica que el juego ha sido finalizado Debug.Log("Game Over"); _sequenceControls = null; CurrState = GameState.None; //LeanTween.delayedCall(waitTimeGameOver, () => //{ // // Reiniciar escena //}); break; } case GameState.Paused: { // Detener juego o secuencia break; } } }