示例#1
0
    // Update is called once per frame
    void FixedUpdate()
    {
        if (m_paused)
        {
            return;
        }

        if (!tutorialOver)
        {
            var spinManager = m_currentGame[0].GetComponent <SpinManager>();
            if (spinManager.VelocityManager.GetCurrentVelocity() > 50f)
            {
                tutorialOver = true;
                m_healthManager.Unpause();
                gameStartTime = Time.time;
                StartMiniGame(1);
            }
        }

        if (tutorialOver)
        {
            m_score = (int)(Time.time - gameStartTime);
            var minutes = (int)(m_score / 60);
            var seconds = m_score % 60;
            ScoreText.text = $"{minutes}:{seconds:00}";

            if (m_healthManager.GetHP() < 0)
            {
                Die();
            }

            m_difficultyModifier += DIFFICULTY_SCALE_SPEED * Time.deltaTime;
            m_healthManager.CurrentDifficultyMultiplier = m_difficultyModifier;
            var states = new List <HealthState>();
            // Check any spinners for health updates
            for (var i = 0; i < m_currentGame.Count; i++)
            {
                var game = m_currentGame[i];
                if (game == null)
                {
                    continue;
                }

                var spinManager = game.GetComponent <SpinManager>();
                if (spinManager == null)
                {
                    continue;
                }

                switch (spinManager.SpinState)
                {
                case SpinState.ReallyFine:
                    if (spinManager.VelocityManager.GetCurrentVelocity() > 50f)
                    {
                        NotificationSystem.CancelAlert(i, AlertLevel.High);
                    }

                    break;

                case SpinState.Fine:
                    if (spinManager.VelocityManager.GetCurrentVelocity() > 50f)
                    {
                        NotificationSystem.CancelAlert(i, AlertLevel.High);
                    }

                    break;

                case SpinState.Bad:
                    if (spinManager.VelocityManager.GetCurrentVelocity() < 25f)
                    {
                        NotificationSystem.IndefiniteAlert(i, AlertLevel.High);
                    }

                    break;

                case SpinState.ReallyBad:
                    if (spinManager.VelocityManager.GetCurrentVelocity() < 25f)
                    {
                        NotificationSystem.IndefiniteAlert(i, AlertLevel.High);
                    }

                    break;
                }

                states.Add(spinManager.GetHealthState());
            }

            // Assuming we want the worst performance of all current spinners to be what affects our hp
            var worstState = HealthState.Fine;

            /* for (var i = 0; i < states.Count; i++)
             * {
             *   var state = states[i];
             *   switch (worstState)
             *   {
             *       case HealthState.Fine:
             *           if (state == HealthState.NotFine || state == HealthState.Empty)
             *           {
             *               worstState = state;
             *           }
             *           break;
             *       case HealthState.NotFine:
             *           if (state == HealthState.Empty)
             *           {
             *               worstState = state;
             *           }
             *           break;
             *       case HealthState.Empty:
             *           break;
             *   }
             * }*/



            var current  = doggy == 1 ? 0 : 1;
            var hello105 = states.Count == 1 ? 0 : current;

            m_healthManager.SetHealthState(states[hello105]);

            if (waitingForNewGame)
            {
                startNewGameTimer -= 1 * Time.fixedDeltaTime;
                if (startNewGameTimer < 0f)
                {
                    waitingForNewGame = false;
                    if (doubleSpinnerTimer < 0f)
                    {
                        StartSpinner(newGameSide);
                        leaveSpinnerTimer  = LEAVE_SPINNER_TIMER_INTERVAL;
                        doingDoubleSpinner = true;
                        newGameSide        = (newGameSide + 1) % 2;
                    }
                    else
                    {
                        StartMiniGame(newGameSide);
                    }
                }
            }

            if (doingDoubleSpinner)
            {
                leaveSpinnerTimer -= 1 * Time.fixedDeltaTime;
                if (leaveSpinnerTimer < 0f)
                {
                    doingDoubleSpinner = false;
                    doubleSpinnerTimer = DOUBLE_SPINNER_TIMER_INTERVAL;
                    FinishMiniGame(newGameSide, 50);
                    doggy = doggy * -1;
                }
            }

            doubleSpinnerTimer -= 1 * Time.fixedDeltaTime;
        }
    }