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