Пример #1
0
        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;
            }
            }
        }