private IEnumerator switchStateAfterDelay(float delay, DanceBattleVisualsState newState)
        {
            yield return(new WaitForSeconds(delay));

            if (currentState != DanceBattleVisualsState.Off)
            {
                setState(newState);
            }
        }
        private void setState(DanceBattleVisualsState newState)
        {
            Screens[(int)currentState].SetActive(value: false);
            if (newState == DanceBattleVisualsState.Off || newState == DanceBattleVisualsState.Lobby || localPlayerIsInGame)
            {
                Screens[(int)newState].SetActive(value: true);
                RemotePenguinScreen.SetActive(value: false);
            }
            else
            {
                RemotePenguinScreen.SetActive(value: true);
            }
            switch (newState)
            {
            case DanceBattleVisualsState.Off:
                startTimerForNextLobbyStart();
                break;

            case DanceBattleVisualsState.Game:
                RedScoreBar.StopBounceAnim();
                BlueScoreBar.StopBounceAnim();
                MoveIconContainer.SetActive(value: true);
                setChatVisible(visible: false);
                if (isFirstTurn)
                {
                    CoroutineRunner.Start(playDanceMusicAfterDelay(DanceMusicStartDelay), this, "");
                    isFirstTurn = false;
                }
                CoroutineRunner.Start(switchStateAfterDelay(currentSequenceSet.SequenceDisplayTimeInSeconds, DanceBattleVisualsState.TurnTimer), this, "DanceBattleTimerWait");
                break;

            case DanceBattleVisualsState.TurnTimer:
            {
                destroyMoveIcons();
                MoveIconInputContainer.SetActive(value: true);
                for (int i = 0; i < currentSequenceSet.SequenceLength; i++)
                {
                    DanceBattleMoveIcon component = UnityEngine.Object.Instantiate(moveIconPrefab, MoveIconInputContainer.transform, worldPositionStays: false).GetComponent <DanceBattleMoveIcon>();
                    component.SetState((localPlayerTeamId != 1) ? DanceBattleMoveIcon.MoveIconState.BlankBlue : DanceBattleMoveIcon.MoveIconState.BlankRed);
                    moveIconList.Add(component);
                }
                dispatcher.DispatchEvent(new DanceBattleEvents.SequenceDisplayEnd(this));
                TurnTimer.StartCountdown(currentSequenceSet.TurnTimeInSeconds);
                CoroutineRunner.Start(switchStateAfterDelay(currentSequenceSet.TurnTimeInSeconds, DanceBattleVisualsState.PerformingMoves), this, "DanceBattleResultsWait");
                break;
            }

            case DanceBattleVisualsState.PerformingMoves:
            {
                destroyMoveIcons();
                setChatVisible(visible: true);
                StageAnimator.SetTrigger("StrobesHigh");
                string parameter = $"High{currentTurnData.RoundNum}";
                EventManager.Instance.PostEvent("MUS/Town/DJCadence/DanceGame", EventAction.SetSwitch, parameter, musicTargetObject);
                dispatcher.DispatchEvent(default(DanceBattleEvents.TurnTimerComplete));
                break;
            }

            case DanceBattleVisualsState.RoundResults:
            {
                StageAnimator.SetTrigger("StrobesLow");
                string trigger = "ResultLow";
                if (lastScoreBlueDelta > lastScoreRedDelta)
                {
                    trigger = "ResultPerfectBlue";
                }
                else if (lastScoreBlueDelta < lastScoreRedDelta)
                {
                    trigger = "ResultPerfectRed";
                }
                else if (lastScoreRedDelta > 0.5f)
                {
                    trigger = "ResultMed";
                }
                StageAnimator.SetTrigger(trigger);
                if (currentTurnData.RoundNum == danceBattleDefinition.NumberOfRounds - 1)
                {
                    CoroutineRunner.Start(switchStateAfterDelay(danceBattleDefinition.TurnStartDelayInSeconds, DanceBattleVisualsState.FinalResults), this, "DanceBattleResultsWait");
                }
                EventManager.Instance.PostEvent("MUS/Town/DJCadence/DanceGame", EventAction.SetSwitch, "Low", musicTargetObject);
                break;
            }

            case DanceBattleVisualsState.FinalResults:
                if (currentScoreData != null)
                {
                    int  num  = ((!(currentScoreData.Team1Score > currentScoreData.Team2Score)) ? 1 : 0);
                    bool flag = currentScoreData.Team1Score == currentScoreData.Team2Score;
                    if (flag)
                    {
                        StageAnimator.SetTrigger("WinTie");
                        WinnerText.text = localizer.GetTokenTranslation("PartyGames.FindFour.Draw");
                        WinnerBG.SelectColor(2);
                        FloorController.SetFloorHighlight(redHighlightOn: true, blueHighlightOn: true);
                        FloorController.SetFloorAnim(redAnimOn: true, blueAnimOn: true);
                    }
                    else if (num == 0)
                    {
                        StageAnimator.SetTrigger("WinBlue");
                        WinnerText.text = localizer.GetTokenTranslation("Activity.DanceBattle.TeamBlueWin");
                        WinnerBG.SelectColor(0);
                        FloorController.SetFloorHighlight(redHighlightOn: false, blueHighlightOn: true);
                        FloorController.SetFloorAnim(redAnimOn: false, blueAnimOn: true);
                    }
                    else
                    {
                        StageAnimator.SetTrigger("WinRed");
                        WinnerText.text = localizer.GetTokenTranslation("Activity.DanceBattle.TeamRedWin");
                        WinnerBG.SelectColor(1);
                        FloorController.SetFloorHighlight(redHighlightOn: true, blueHighlightOn: false);
                        FloorController.SetFloorAnim(redAnimOn: true, blueAnimOn: false);
                    }
                    if (flag || localPlayerTeamId == num)
                    {
                        EventManager.Instance.PostEvent("MUS/Town/DJCadence/DanceGame", EventAction.SetSwitch, "Win", musicTargetObject);
                    }
                    else
                    {
                        EventManager.Instance.PostEvent("MUS/Town/DJCadence/DanceGame", EventAction.SetSwitch, "Lose", musicTargetObject);
                    }
                    dispatcher.DispatchEvent(new DanceBattleEvents.FinalResultsShown(flag, num));
                    if (EndGameParticleSelector != null)
                    {
                        EndGameParticleSelector.SelectGameObject(num);
                    }
                }
                break;
            }
            currentState = newState;
        }