Esempio n. 1
0
        /// <summary>
        /// Shows a notification if we are on a speed streak.
        /// </summary>
        public void ShowNotificationIfOnSpeedStreak()
        {
            float speed = playerControl.GetSpeed();

            if (speed > 50f && !shown50Streak)
            {
                hud.ShowNotification(Color.white, "50 Speed Streak!");
                AudioManager.instance.Play(SoundNames.SPEED_STREAK);
                shown50Streak = true;
            }

            if (speed > 100f && !shown100Streak)
            {
                hud.ShowNotification(Color.white, "100 Speed Streak!");
                AudioManager.instance.Play(SoundNames.SPEED_STREAK);
                shown100Streak = true;
            }

            if (playerControl.HasReachedMaxSpeed() && !shownMaxSpeedStreak)
            {
                hud.ShowNotification(Color.white, "Max Speed!");
                AudioManager.instance.Play(SoundNames.SPEED_STREAK);
                shownMaxSpeedStreak = true;
            }
        }
        private void OnCollisionEnter(Collision other)
        {
            switch (other.gameObject.tag)
            {
            case Tags.OBSTACLE:
                if (IsGodMode())
                {
                    achievementManager.UnlockAchievement(AchievementIds.FLY_THROUGH_OBSTACLE_WHEN_INVINCIBLE);
                    return;
                }

                dead = true;

                GameObject e = Instantiate(explosion) as GameObject;
                e.transform.SetPosition(new Vector3(transform.position.x, 0.6f, transform.position.z));

                int topSpeed      = playerControl.GetSpeed();
                int finalScore    = playerScore.GetFinalScore();
                int bonusScore    = playerScore.GetBonusScore();
                int distanceScore = playerScore.GetDistanceScore();

                Destroy(e, 3f);

                playerControl.StopMoving();
                playerModel.SetActive(false);
                hud.SetNewHighscoreText("");
                gameHUD.SetActive(false);

                audioManager.Play(SoundNames.PLAYER_DEATH);
                audioManager.Pause(SoundNames.SHIP_ENGINE);

                shopManager.AddCash(finalScore);

                scoreboard.Show();
                scoreboard.AnimateDistanceScore(distanceScore);
                scoreboard.AnimateBonusScore(bonusScore);
                scoreboard.AnimateTopSpeed(topSpeed);
                scoreboard.AnimateFinalScore(finalScore);

                bool newScore    = highscoreManager.SaveLocalHighscore(finalScore);
                bool newDistance = highscoreManager.SaveDistanceHighscore(distanceScore);

                if (newScore || newDistance)
                {
                    hud.SetNewHighscoreText(Ui.NEW_HIGHSCORE);
                    audioManager.Play(SoundNames.NEW_HIGHSCORE);
                }

                // Now update achievements
                achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_1000, 1000, distanceScore);
                achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_10000, 10000, distanceScore);
                achievementManager.ProgressAchievement(AchievementIds.DISTANCE_FURTHER_THAN_50000, 50000, distanceScore);
                achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_FIVE_MILLION, 5000000, finalScore);
                achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_HALF_MILLION, 500000, finalScore);
                achievementManager.ProgressAchievement(AchievementIds.POINTS_OVER_MILLION, 1000000, finalScore);
                achievementManager.UnlockAchievement(AchievementIds.DIE);

                StartCoroutine(RestartLevelRoutine());
                break;

            default:
                // Nothing to do!
                break;
            }
        }