Esempio n. 1
0
    public void ChangePhase(GamePhase _GamePhase)
    {
        switch (_GamePhase)
        {
        case GamePhase.MAIN_MENU:
            Randomize();
            SetColor(ComputeCurrentPlayerColor(true, 0));
            break;

        case GamePhase.SHOP:
            SetColor(ComputeCurrentPlayerColor(true, 0));
            break;

        case GamePhase.LOADING:
            m_LastBrushTime   = Time.time;
            m_LastPowerUpTime = Time.time;
            m_PowerUpRate     = Random.Range(c_MinPowerUpRate, c_MaxPowerUpRate);
            m_Level           = m_StatsManager.GetLevel();
            PopPlayers();

            if (m_OrderedPlayers == null)
            {
                m_OrderedPlayers = new List <Player>();
            }
            else
            {
                m_OrderedPlayers.Clear();
            }

            m_OrderedPlayers.AddRange(m_Players);
            break;

        case GamePhase.GAME:
            m_IsPlaying = true;
            break;

        case GamePhase.END:
            int playerScore = Mathf.RoundToInt(m_Players[0].percent * 100.0f);
            m_StatsManager.TryToSetBestScore(playerScore);

            int rankingScore = -1;     // Difficulty down by default
            int playerRank   = m_BattleRoyaleManager.GetHumanPlayer().m_Rank;

            if (playerRank == 0)     // Best, then increase difficulty
            {
                rankingScore = 1;
            }
            else if (playerRank >= 2)     // Second or third, then stay at same difficulty
            {
                rankingScore = 0;
            }

            m_StatsManager.AddGameResult(rankingScore);
            int xp = m_XPByRank[playerRank];
            m_StatsManager.SetLastXP(xp);
            PreEndView.Instance.LaunchPreEnd();
            m_StatsManager.GainXP();
            break;
        }

        currentPhase = _GamePhase;

        if (onGamePhaseChanged != null)
        {
            onGamePhaseChanged.Invoke(_GamePhase);
        }
    }