Пример #1
0
    public void FinishScene()
    {
        // Open the singing results scene.
        SingingResultsSceneData singingResultsSceneData = new SingingResultsSceneData();

        singingResultsSceneData.SongMeta = SongMeta;

        //Get the stats manager and the stats object
        Statistics stats = StatsManager.Instance.Statistics;

        foreach (PlayerController playerController in PlayerControllers)
        {
            SingingResultsSceneData.PlayerScoreData scoreData = new SingingResultsSceneData.PlayerScoreData();
            scoreData.TotalScore                = playerController.PlayerScoreController.TotalScore;
            scoreData.GoldenNotesScore          = playerController.PlayerScoreController.GoldenNotesTotalScore;
            scoreData.NormalNotesScore          = playerController.PlayerScoreController.NormalNotesTotalScore;
            scoreData.PerfectSentenceBonusScore = playerController.PlayerScoreController.PerfectSentenceBonusTotalScore;
            singingResultsSceneData.AddPlayerScores(playerController.PlayerProfile, scoreData);

            //Save to highscore database
            stats.RecordSongFinished(SongMeta, playerController.PlayerProfile.Name, playerController.PlayerProfile.Difficulty,
                                     Convert.ToInt32(playerController.PlayerScoreController.TotalScore));
        }
        SceneNavigator.Instance.LoadScene(EScene.SingingResultsScene, singingResultsSceneData);
    }
Пример #2
0
    public void FinishScene()
    {
        // Open the singing results scene.
        SingingResultsSceneData singingResultsSceneData = new SingingResultsSceneData();

        singingResultsSceneData.SongMeta = SongMeta;
        singingResultsSceneData.PlayerProfileToMicProfileMap = sceneData.PlayerProfileToMicProfileMap;

        // Check if the full song has been sung, i.e., the playback position is after the last note.
        // This determines whether the statistics should be updated and the score should be recorded.
        bool isAfterLastNote = true;

        foreach (PlayerController playerController in PlayerControllers)
        {
            SingingResultsSceneData.PlayerScoreData scoreData = new SingingResultsSceneData.PlayerScoreData();
            scoreData.TotalScore                = playerController.PlayerScoreController.TotalScore;
            scoreData.GoldenNotesScore          = playerController.PlayerScoreController.GoldenNotesTotalScore;
            scoreData.NormalNotesScore          = playerController.PlayerScoreController.NormalNotesTotalScore;
            scoreData.PerfectSentenceBonusScore = playerController.PlayerScoreController.PerfectSentenceBonusTotalScore;
            singingResultsSceneData.AddPlayerScores(playerController.PlayerProfile, scoreData);

            Note lastNote = playerController.GetLastNote();
            if (CurrentBeat < lastNote.EndBeat)
            {
                isAfterLastNote = false;
            }
        }

        if (isAfterLastNote)
        {
            UpdateSongFinishedStats();
        }

        SceneNavigator.Instance.LoadScene(EScene.SingingResultsScene, singingResultsSceneData);
    }
Пример #3
0
    public void FinishScene(bool isAfterEndOfSong)
    {
        // Open the singing results scene.
        SingingResultsSceneData singingResultsSceneData = new SingingResultsSceneData();

        singingResultsSceneData.SongMeta = SongMeta;
        singingResultsSceneData.PlayerProfileToMicProfileMap = sceneData.PlayerProfileToMicProfileMap;
        singingResultsSceneData.SongDurationInMillis         = (int)songAudioPlayer.DurationOfSongInMillis;

        // Check if the full song has been sung, i.e., the playback position is after the last note.
        // This determines whether the statistics should be updated and the score should be recorded.
        bool isAfterLastNote = true;

        foreach (PlayerController playerController in PlayerControllers)
        {
            singingResultsSceneData.AddPlayerScores(playerController.PlayerProfile, playerController.PlayerScoreController.ScoreData);

            Note lastNoteInSong = playerController.GetLastNoteInSong();
            if (!isAfterEndOfSong && CurrentBeat < lastNoteInSong.EndBeat)
            {
                isAfterLastNote = false;
            }
        }

        if (isAfterLastNote)
        {
            UpdateSongFinishedStats();
        }

        SceneNavigator.Instance.LoadScene(EScene.SingingResultsScene, singingResultsSceneData);
    }
Пример #4
0
    public List <IBinding> GetBindings()
    {
        sceneData = SceneNavigator.Instance.GetSceneDataOrThrow <SingingResultsSceneData>();

        BindingBuilder bb = new BindingBuilder();

        bb.BindExistingInstance(this);
        bb.BindExistingInstance(sceneData);
        return(bb.GetBindings());
    }
Пример #5
0
    private SingingResultsSceneData CreateDefaultSceneData()
    {
        SingingResultsSceneData data = new SingingResultsSceneData();

        data.SongMeta = SongMetaManager.Instance.SongMetas[0];

        SingingResultsSceneData.PlayerScoreData playerScoreData = new SingingResultsSceneData.PlayerScoreData();
        playerScoreData.TotalScore                = 6500;
        playerScoreData.NormalNotesScore          = 4000;
        playerScoreData.GoldenNotesScore          = 2000;
        playerScoreData.PerfectSentenceBonusScore = 500;

        data.AddPlayerScores(PlayerProfileManager.Instance.PlayerProfiles[0], playerScoreData);
        return(data);
    }
Пример #6
0
    public void FinishScene()
    {
        // Open the singing results scene.
        SingingResultsSceneData singingResultsSceneData = new SingingResultsSceneData();

        singingResultsSceneData.SongMeta = SongMeta;
        foreach (PlayerController playerController in PlayerControllers)
        {
            SingingResultsSceneData.PlayerScoreData scoreData = new SingingResultsSceneData.PlayerScoreData();
            scoreData.TotalScore                = playerController.PlayerScoreController.TotalScore;
            scoreData.GoldenNotesScore          = playerController.PlayerScoreController.GoldenNotesTotalScore;
            scoreData.NormalNotesScore          = playerController.PlayerScoreController.NormalNotesTotalScore;
            scoreData.PerfectSentenceBonusScore = playerController.PlayerScoreController.PerfectSentenceBonusTotalScore;
            singingResultsSceneData.AddPlayerScores(playerController.PlayerProfile, scoreData);
        }
        SceneNavigator.Instance.LoadScene(EScene.SingingResultsScene, singingResultsSceneData);
    }
Пример #7
0
    public SceneData GetDefaultSceneData()
    {
        SingingResultsSceneData data = new SingingResultsSceneData();

        SongMetaManager.Instance.WaitUntilSongScanFinished();
        data.SongMeta = SongMetaManager.Instance.GetFirstSongMeta();

        SingingResultsSceneData.PlayerScoreData playerScoreData = new SingingResultsSceneData.PlayerScoreData();
        playerScoreData.TotalScore                = 6500;
        playerScoreData.NormalNotesScore          = 4000;
        playerScoreData.GoldenNotesScore          = 2000;
        playerScoreData.PerfectSentenceBonusScore = 500;

        PlayerProfile playerProfile = SettingsManager.Instance.Settings.PlayerProfiles[0];

        data.AddPlayerScores(playerProfile, playerScoreData);
        return(data);
    }
    public SceneData GetDefaultSceneData()
    {
        SingingResultsSceneData data = new SingingResultsSceneData();

        SongMetaManager.Instance.WaitUntilSongScanFinished();
        data.SongMeta             = SongMetaManager.Instance.GetFirstSongMeta();
        data.SongDurationInMillis = 120 * 1000;

        PlayerScoreControllerData playerScoreData = new PlayerScoreControllerData();

        playerScoreData.TotalScore                     = 6500;
        playerScoreData.NormalNotesTotalScore          = 4000;
        playerScoreData.GoldenNotesTotalScore          = 2000;
        playerScoreData.PerfectSentenceBonusTotalScore = 500;

        playerScoreData.NormalNoteLengthTotal = 80;
        playerScoreData.GoldenNoteLengthTotal = 20;
        playerScoreData.PerfectSentenceCount  = 10;

        playerScoreData.NormalBeatData.GoodBeats    = 30;
        playerScoreData.NormalBeatData.PerfectBeats = 10;
        playerScoreData.GoldenBeatData.GoodBeats    = 5;
        playerScoreData.GoldenBeatData.PerfectBeats = 5;

        Sentence sentence1 = CreateDummySentence(0, 200);
        Sentence sentence2 = CreateDummySentence(201, 500);
        Sentence sentence3 = CreateDummySentence(501, 1500);

        playerScoreData.SentenceToSentenceScoreMap.Add(sentence1, CreateSentenceScore(sentence1, 3000));
        playerScoreData.SentenceToSentenceScoreMap.Add(sentence2, CreateSentenceScore(sentence2, 5000));
        playerScoreData.SentenceToSentenceScoreMap.Add(sentence3, CreateSentenceScore(sentence3, 6500));

        PlayerProfile playerProfile = SettingsManager.Instance.Settings.PlayerProfiles[0];

        data.AddPlayerScores(playerProfile, playerScoreData);
        data.PlayerProfileToMicProfileMap[playerProfile] = SettingsManager.Instance.Settings.MicProfiles.FirstOrDefault();
        return(data);
    }
Пример #9
0
 void Start()
 {
     sceneData = SceneNavigator.Instance.GetSceneData <SingingResultsSceneData>(CreateDefaultSceneData());
     SelectLayout();
     FillLayout();
 }
Пример #10
0
 void Start()
 {
     sceneData = SceneNavigator.Instance.GetSceneDataOrThrow <SingingResultsSceneData>();
     SelectLayout();
     FillLayout();
 }