コード例 #1
0
        public void LateUpdate()
        {
            string sceneName = SceneManager.GetActiveScene().name;

            if (this.sceneChanged)
            {
                this.sceneChanged = false;
                if (sceneName == "Gameplay")
                {
                    // Song length
                    var gameManagerObject = GameObject.Find("Game Manager");
                    gameManager      = new GameManagerWrapper(gameManagerObject.GetComponent <GameManager>());
                    starProgress     = gameManager.StarProgress;
                    basePlayers      = gameManager.BasePlayers;
                    notes            = basePlayers[0].Notes;
                    totalNoteCount   = notes?.Count ?? 0;
                    totalStarPowers  = notes?.Count(n => n.IsStarPowerEnd) ?? 0;
                    hitNotes         = 0;
                    missedNotes      = 0;
                    currentCombo     = 0;
                    highestCombo     = 0;
                    currentNoteIndex = 0;

                    DestroyAndNullGameplayLabels();
                    Transform canvasTransform = FadeBehaviourWrapper.instance.fadeGraphic.canvas.transform;

                    TimeNameLabel           = CreateGameplayLabel(canvasTransform, "Extra Song UI Time Name Label", uiFont);
                    SongTimeLabel           = CreateGameplayLabel(canvasTransform, "Extra Song UI Song Time Label", uiFont);
                    SongLengthLabel         = CreateGameplayLabel(canvasTransform, "Extra Song UI Song Length Label", uiFont);
                    SongTimePercentageLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Song Time Percentage Label", uiFont);

                    CurrentStarProgressNameLabel       = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Star Progress Name Label", uiFont);
                    CurrentStarProgressScoreLabel      = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Star Progress Score Label", uiFont);
                    CurrentStarProgressEndScoreLabel   = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Star Progress End Score Label", uiFont);
                    CurrentStarProgressPercentageLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Star Progress Percentage Label", uiFont);

                    SevenStarProgressNameLabel       = CreateGameplayLabel(canvasTransform, "Extra Song UI Seven Star Progress Name Label", uiFont);
                    SevenStarProgressScoreLabel      = CreateGameplayLabel(canvasTransform, "Extra Song UI Seven Star Progress Score Label", uiFont);
                    SevenStarProgressEndScoreLabel   = CreateGameplayLabel(canvasTransform, "Extra Song UI Seven Star Progress End Score Label", uiFont);
                    SevenStarProgressPercentageLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Seven Star Progress Percentage Label", uiFont);

                    NotesNameLabel              = CreateGameplayLabel(canvasTransform, "Extra Song UI Notes Name Label", uiFont);
                    NotesHitCounterLabel        = CreateGameplayLabel(canvasTransform, "Extra Song UI Notes Hit Counter Label", uiFont);
                    NotesPassedCounterLabel     = CreateGameplayLabel(canvasTransform, "Extra Song UI Notes Passed Counter Label", uiFont);
                    TotalNotesCounterLabel      = CreateGameplayLabel(canvasTransform, "Extra Song UI Total Notes Counter Label", uiFont);
                    SeenNotesHitPercentageLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Seen Notes Hit Percentage Label", uiFont);
                    NotesHitPercentageLabel     = CreateGameplayLabel(canvasTransform, "Extra Song UI Notes Hit Percentage Label", uiFont);
                    NotesMissedCounterLabel     = CreateGameplayLabel(canvasTransform, "Extra Song UI Notes Missed Counter Label", uiFont);

                    StarPowerNameLabel           = CreateGameplayLabel(canvasTransform, "Extra Song UI Star Power Name Label", uiFont);
                    StarPowersGottenCounterLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Star Powers Gotten Counter Label", uiFont);
                    TotalStarPowersCounterLabel  = CreateGameplayLabel(canvasTransform, "Extra Song UI Total Star Powers Counter Label", uiFont);
                    StarPowerPercentageLabel     = CreateGameplayLabel(canvasTransform, "Extra Song UI Star Power Percentage Label", uiFont);
                    CurrentStarPowerLabel        = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Star Power Label", uiFont);

                    ComboNameLabel           = CreateGameplayLabel(canvasTransform, "Extra Song UI Combo Name Label", uiFont);
                    CurrentComboCounterLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Current Combo Counter Label", uiFont);
                    HighestComboCounterLabel = CreateGameplayLabel(canvasTransform, "Extra Song UI Highest Combo Counter Label", uiFont);
                }
                else
                {
                    DestroyAndNullGameplayLabels();
                }
            }
            if (sceneName == "Main Menu" && !versionCheck.HasVersionBeenChecked)
            {
                if (config.SilenceUpdates)
                {
                    versionCheck.HasVersionBeenChecked = true;
                }
                else
                {
                    string detectedVersion = GlobalVariablesWrapper.instance.buildVersion;
                    versionCheck.CheckVersion(detectedVersion);
                }
            }
            if (sceneName == "Gameplay" && !gameManager.IsNull() && gameManager.PracticeUI.practiceUI == null)
            {
                // Song length
                formattedSongTime   = string.Format(config.SongTime.Format, DoubleToTimeString(gameManager.SongTime));
                formattedSongLength = string.Format(config.SongLength.Format, DoubleToTimeString(gameManager.SongLength));
                songTimePercentage  = Math.Max(Math.Min(gameManager.SongTime * 100.0 / gameManager.SongLength, 100.0), 0.0);

                // Star progress
                currentStarCount    = starProgress.CurrentStar;
                currentScore        = Math.Min(starProgress.LastScore, starProgress.StarScores[6]);          //TODO: Migrate to ScoreManager 'cause this stops incremented after you reach 7-star.
                previousStarScore   = starProgress.CurrentStar == 0 ? 0 : starProgress.StarScores[starProgress.CurrentStar - 1];
                nextStarScore       = starProgress.StarScores[starProgress.CurrentStar];
                nextStarPercentage  = starProgress.CurrentStar < 7 ? (currentScore - previousStarScore) * 100.0 / (nextStarScore - previousStarScore) : 100.0;
                sevenStarScore      = starProgress.StarScores[6];
                sevenStarPercentage = Math.Min(currentScore * 100.0 / sevenStarScore, 100.0);

                // Note count
                while (currentNoteIndex < totalNoteCount && (notes[currentNoteIndex].WasHit || notes[currentNoteIndex].WasMissed))
                {
                    if (notes[currentNoteIndex].WasHit)
                    {
                        ++hitNotes;
                    }
                    else if (notes[currentNoteIndex].WasMissed)
                    {
                        ++missedNotes;
                    }
                    ++currentNoteIndex;
                }
                seenNotes           = hitNotes + missedNotes;
                hitNotesPercentage  = totalNoteCount == 0 ? 100.0 : hitNotes * 100.0 / totalNoteCount;
                seenNotesPercentage = seenNotes == 0 ? 100.0 : hitNotes * 100.0 / seenNotes;
                fcIndicator         = seenNotes == hitNotes ? (!gameManager.BasePlayers[0].FirstNoteMissed ? "FC" : "100%") : $"-{missedNotes}";

                starPowersGotten    = basePlayers[0].StarPowersHit;
                starPowerPercentage = totalStarPowers == 0 ? 100.0 : starPowersGotten * 100.0 / totalStarPowers;
                currentStarPower    = basePlayers[0].spBar.someFloat * 100.0;

                currentCombo = basePlayers[0].Combo;
                highestCombo = basePlayers[0].HighestCombo;

                UpdateGameplayLabel(TimeNameLabel, config.TimeName, config.TimeName.Format);
                UpdateGameplayLabel(SongTimeLabel, config.SongTime, formattedSongTime);
                UpdateGameplayLabel(SongLengthLabel, config.SongLength, formattedSongLength);
                UpdateGameplayLabel(SongTimePercentageLabel, config.SongTimePercentage, string.Format(config.SongTimePercentage.Format, songTimePercentage.ToString("0.00")));

                UpdateGameplayLabel(CurrentStarProgressNameLabel, config.CurrentStarProgressName, string.Format(config.CurrentStarProgressName.Format, currentStarCount, Math.Min(7, currentStarCount + 1)));
                UpdateGameplayLabel(CurrentStarProgressScoreLabel, config.CurrentStarProgressScore, string.Format(config.CurrentStarProgressScore.Format, currentScore - previousStarScore));
                UpdateGameplayLabel(CurrentStarProgressEndScoreLabel, config.CurrentStarProgressEndScore, string.Format(config.CurrentStarProgressEndScore.Format, nextStarScore - previousStarScore));
                UpdateGameplayLabel(CurrentStarProgressPercentageLabel, config.CurrentStarProgressPercentage, string.Format(config.CurrentStarProgressPercentage.Format, nextStarPercentage.ToString("0.00")));

                UpdateGameplayLabel(SevenStarProgressNameLabel, config.SevenStarProgressName, string.Format(config.SevenStarProgressName.Format, 0, 7));
                UpdateGameplayLabel(SevenStarProgressScoreLabel, config.SevenStarProgressScore, string.Format(config.SevenStarProgressScore.Format, currentScore));
                UpdateGameplayLabel(SevenStarProgressEndScoreLabel, config.SevenStarProgressEndScore, string.Format(config.SevenStarProgressEndScore.Format, sevenStarScore));
                UpdateGameplayLabel(SevenStarProgressPercentageLabel, config.SevenStarProgressPercentage, string.Format(config.SevenStarProgressPercentage.Format, sevenStarPercentage.ToString("0.00")));

                UpdateGameplayLabel(NotesNameLabel, config.NotesName, config.NotesName.Format);
                UpdateGameplayLabel(NotesHitCounterLabel, config.NotesHitCounter, string.Format(config.NotesHitCounter.Format, hitNotes));
                UpdateGameplayLabel(NotesPassedCounterLabel, config.NotesPassedCounter, string.Format(config.NotesPassedCounter.Format, seenNotes));
                UpdateGameplayLabel(TotalNotesCounterLabel, config.TotalNotesCounter, string.Format(config.TotalNotesCounter.Format, totalNoteCount));
                UpdateGameplayLabel(SeenNotesHitPercentageLabel, config.SeenNotesHitPercentage, string.Format(config.SeenNotesHitPercentage.Format, seenNotesPercentage.ToString("0.00")));
                UpdateGameplayLabel(NotesHitPercentageLabel, config.NotesHitPercentage, string.Format(config.NotesHitPercentage.Format, hitNotesPercentage.ToString("0.00")));
                UpdateGameplayLabel(NotesMissedCounterLabel, config.NotesMissedCounter, string.Format(config.NotesMissedCounter.Format, fcIndicator));

                UpdateGameplayLabel(StarPowerNameLabel, config.StarPowerName, config.StarPowerName.Format);
                UpdateGameplayLabel(StarPowersGottenCounterLabel, config.StarPowersGottenCounter, string.Format(config.StarPowersGottenCounter.Format, starPowersGotten));
                UpdateGameplayLabel(TotalStarPowersCounterLabel, config.TotalStarPowersCounter, string.Format(config.TotalStarPowersCounter.Format, totalStarPowers));
                UpdateGameplayLabel(StarPowerPercentageLabel, config.StarPowerPercentage, string.Format(config.StarPowerPercentage.Format, starPowerPercentage.ToString("0.00")));
                UpdateGameplayLabel(CurrentStarPowerLabel, config.CurrentStarPower, string.Format(config.CurrentStarPower.Format, currentStarPower.ToString("0.00")));

                UpdateGameplayLabel(ComboNameLabel, config.ComboName, config.ComboName.Format);
                UpdateGameplayLabel(CurrentComboCounterLabel, config.CurrentComboCounter, string.Format(config.CurrentComboCounter.Format, currentCombo));
                UpdateGameplayLabel(HighestComboCounterLabel, config.HighestComboCounter, string.Format(config.HighestComboCounter.Format, highestCombo));
            }
            if (uiFont is null && sceneName == "Main Menu")
            {
                //TODO: Get the font directly from the bundle?
                uiFont = GameObject.Find("Profile Title").GetComponent <Text>().font;
            }
            config.HandleInput();
        }
コード例 #2
0
        public void LateUpdate()
        {
            string sceneName = SceneManager.GetActiveScene().name;

            if (this.sceneChanged)
            {
                this.sceneChanged = false;
                if (sceneName == "Gameplay")
                {
                    var gameManagerObject = GameObject.Find("Game Manager");
                    gameManager  = GameManagerWrapper.Wrap(gameManagerObject.GetComponent <GameManager>());
                    starProgress = gameManager.StarProgress;
                    basePlayers  = gameManager.BasePlayers;
                    songLength   = TimeSpan.FromSeconds(gameManager.SongLength);
                    numPlayers   = basePlayers.Count(bp => !bp.IsNull());
                    for (int i = bandIndex; i >= 0; --i)
                    {
                        if (i == bandIndex)
                        {
                            totalNoteCount[i]  = 0;
                            totalStarPowers[i] = 0;
                        }
                        else
                        {
                            var player = basePlayers[i];
                            if (!player.IsNull())
                            {
                                var notes = player.Notes;
                                totalNoteCount[bandIndex]  += (totalNoteCount[i] = notes.Count);
                                totalStarPowers[bandIndex] += (totalStarPowers[i] = notes.Count(n => n.IsStarPowerEnd));
                            }
                            else
                            {
                                totalNoteCount[i]      = 0;
                                hitNotesPercentage[i]  = 100.0;
                                seenNotesPercentage[i] = 100.0;
                                totalStarPowers[i]     = 0;
                            }
                        }
                        hitNotes[i]            = 0;
                        missedNotes[i]         = 0;
                        seenNotes[i]           = 0;
                        hitNotesPercentage[i]  = 0.00;
                        seenNotesPercentage[i] = 0.00;
                        fcIndicator[i]         = "FC";
                        starPowersGotten[i]    = 0;
                        starPowerPercentage[i] = 0.00;
                        currentStarPower[i]    = 0.00;
                        currentCombo[i]        = 0;
                        highestCombo[i]        = 0;
                    }

                    DestroyLabels();
                    Transform canvasTransform = FadeBehaviourWrapper.Instance.FadeGraphic.canvas.transform;

                    foreach (var label in config.Layout[numPlayers - 1])
                    {
                        CreateGameplayLabel(canvasTransform, label);
                    }
                }
                else
                {
                    DestroyLabels();
                }
            }
            if (sceneName == "Gameplay" && !gameManager.IsNull() && gameManager.PracticeUI.PracticeUI == null)
            {
                // Song length
                songTime           = TimeSpan.FromSeconds(Math.Max(Math.Min(gameManager.SongTime, gameManager.SongLength), 0.0));
                songTimePercentage = Math.Max(Math.Min(gameManager.SongTime * 100.0 / gameManager.SongLength, 100.0), 0.0);

                // Star progress
                currentStarCount    = starProgress.CurrentStar;
                currentScore        = Math.Min(starProgress.LastScore, starProgress.StarScores[6]);          //TODO: Migrate to ScoreManager 'cause this stops incremented after you reach 7-star.
                previousStarScore   = starProgress.CurrentStar == 0 ? 0 : starProgress.StarScores[starProgress.CurrentStar - 1];
                nextStarScore       = starProgress.StarScores[starProgress.CurrentStar];
                nextStarPercentage  = starProgress.CurrentStar < 7 ? (currentScore - previousStarScore) * 100.0 / (nextStarScore - previousStarScore) : 100.0;
                sevenStarScore      = starProgress.StarScores[6];
                sevenStarPercentage = Math.Min(currentScore * 100.0 / sevenStarScore, 100.0);

                currentStarPower[bandIndex] = 0.0;
                for (int i = 0; i < bandIndex; ++i)
                {
                    var player = basePlayers[i];
                    if (!player.IsNull())
                    {
                        currentStarPower[i]          = player.SPBar.LastFillAmount * 100.0;
                        currentStarPower[bandIndex] += currentStarPower[i];
                    }
                }

                foreach (var label in labels)
                {
                    UpdateGameplayLabel(label.Item1, label.Item2, label.Item3);
                }
            }
            config.HandleInput();
        }