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); } }