static bool Prefix(ref ImmediateRankUIPanel __instance, ref RelativeScoreAndImmediateRankCounter ____relativeScoreAndImmediateRankCounter, ref RankModel.Rank ____prevImmediateRank, ref float ____prevRelativeScore, ref TextMeshProUGUI ____rankText, ref TextMeshProUGUI ____relativeScoreText) { if (!CountersController.settings.Enabled) { return(true); //Dont use Score Counters decimal precision if the plugin is disabled } if (model == null) { model = CountersController.settings.scoreConfig; } RankModel.Rank rank = ____relativeScoreAndImmediateRankCounter.immediateRank; if (rank != ____prevImmediateRank) { ____rankText.text = model.Mode != ICounterMode.BaseGame ? $"\n{RankModel.GetRankName(rank)}" : RankModel.GetRankName(rank); ____prevImmediateRank = rank; } float score = ____relativeScoreAndImmediateRankCounter.relativeScore; if (Mathf.Abs(____prevRelativeScore - score) >= 0.001f) { float roundedScore = (float)Math.Round((decimal)score * 100, model.DecimalPrecision); ____relativeScoreText.text = $"{roundedScore.ToString($"F{model.DecimalPrecision}")}%"; } return(false); }
public void Set(int score, int combo, float seido, RankModel.Rank rank) { this.Score = score; this.Combo = combo; this.Seido = seido; this.Rank = RankModel.GetRankName(rank); }
public void UpdateCurrentMaxScore() { GameStatus gameStatus = statusManager.gameStatus; int currentMaxScoreBeforeMultiplier = ScoreModel.MaxRawScoreForNumberOfNotes(gameStatus.passedNotes); gameStatus.currentMaxScore = gameplayModifiersSO.MaxModifiedScoreForMaxRawScore(currentMaxScoreBeforeMultiplier, gameplayModifiers, gameplayModifiersSO, gameEnergyCounter.energy); RankModel.Rank rank = RankModel.GetRankForScore(gameStatus.rawScore, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore); gameStatus.rank = RankModel.GetRankName(rank); }
private void OnScoreDidChange(int scoreBeforeMultiplier) { Data.score = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(scoreBeforeMultiplier, Data.modifierMultiplier); int currentMaxScoreBeforeMultiplier = ScoreController.MaxScoreForNumberOfNotes(Data.passedNotes); Data.currentMaxScore = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(currentMaxScoreBeforeMultiplier, Data.modifierMultiplier); RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, Data.score, currentMaxScoreBeforeMultiplier, Data.currentMaxScore); Data.rank = RankModel.GetRankName(rank); Data.StatusChange(ChangedProperties.Performance, "scoreChanged"); }
static bool Prefix(ref ImmediateRankUIPanel __instance, ref RelativeScoreAndImmediateRankCounter ____relativeScoreAndImmediateRankCounter, ref RankModel.Rank ____prevImmediateRank, ref float ____prevRelativeScore, ref TextMeshProUGUI ____rankText, ref TextMeshProUGUI ____relativeScoreText) { if (!CountersController.settings.Enabled) { return(true); //Dont use Score Counters decimal precision if the plugin is disabled } if (model == null) { model = CountersController.settings.scoreConfig; } RankModel.Rank rank = ____relativeScoreAndImmediateRankCounter.immediateRank; if (rank != ____prevImmediateRank) { ____rankText.text = model.Mode != ICounterMode.BaseGame ? $"\n{RankModel.GetRankName(rank)}" : RankModel.GetRankName(rank); ____prevImmediateRank = rank; //I am moving this code down here so that it only runs if the rank changes instead of every time the game refreshes the UI. //Because of how cosmic brain Beat Games is, this code should run on game startup, because SSS != SS, so should work fine. if (model.CustomRankColors) { string color = "#FFFFFF"; //Blank white shall be used for the default color in case like some SSS shit happens switch (RankModel.GetRankName(rank)) //Using PogU switch case instead of Pepega If chain { case "SS": color = model.SSColor; break; //Even compressing this shit down to one liners, look at me! case "S": color = model.SColor; break; case "A": color = model.AColor; break; case "B": color = model.BColor; break; case "C": color = model.CColor; break; case "D": color = model.DColor; break; case "E": color = model.EColor; break; } ColorUtility.TryParseHtmlString(color, out Color RankColor); //converts config hex color to unity RGBA value ____rankText.color = RankColor; //sets color of ranktext } } float score = ____relativeScoreAndImmediateRankCounter.relativeScore; if (Mathf.Abs(____prevRelativeScore - score) >= 0.001f) { float roundedScore = (float)Math.Round((decimal)score * 100, model.DecimalPrecision); ____relativeScoreText.text = $"{roundedScore.ToString($"F{model.DecimalPrecision}")}%"; } return(false); }
public void SetSongInfo(IDifficultyBeatmap songInfo, LevelCompletionResults results) { if (lastSong != songInfo) { lastSong = songInfo; _songNameText.text = $"{songInfo.level.songName} <size=80%>{songInfo.level.songSubName}</size>"; _scoreText.text = ScoreFormatter.Format(results.score); _difficultyText.text = songInfo.difficulty.Name(); _rankText.text = RankModel.GetRankName(results.rank); _goodCutsText.text = $"{results.goodCutsCount}<size=50%> / {songInfo.beatmapData.notesCount}"; _fullComboText.gameObject.SetActive(results.fullCombo); } }
private void UpdateText() { RankModel.Rank immediateRank = relativeScoreAndImmediateRank.immediateRank; if (immediateRank != prevImmediateRank) { rankText.text = RankModel.GetRankName(immediateRank); prevImmediateRank = immediateRank; rankText.color = Settings.CustomRankColors ? Settings.GetRankColorFromRank(immediateRank) : Color.white; } float relativeScore = relativeScoreAndImmediateRank.relativeScore * 100; relativeScoreText.text = $"{relativeScore.ToString($"F{Settings.DecimalPrecision}")}%"; }
public void OnScoreDidChange(int scoreBeforeMultiplier, int scoreAfterMultiplier) { GameStatus gameStatus = statusManager.gameStatus; gameStatus.score = scoreAfterMultiplier; int currentMaxScoreBeforeMultiplier = ScoreController.MaxRawScoreForNumberOfNotes(gameStatus.passedNotes); gameStatus.currentMaxScore = ScoreController.MaxModifiedScoreForMaxRawScore(currentMaxScoreBeforeMultiplier, gameplayModifiers, gameplayModifiersSO); RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore); gameStatus.rank = RankModel.GetRankName(rank); statusManager.EmitStatusUpdate(ChangedProperties.Performance, "scoreChanged"); }
public void EndOfSong(LevelCompletionResults results, SongData data) { won = results.levelEndStateType == LevelCompletionResults.LevelEndStateType.Cleared; endTime = results.endSongTime; rank = RankModel.GetRankName(results.rank); if (!SettingsMenu.instance.HideNbOfPauses) { nbOfPause = data.GetDataCollector().nbOfPause; } else { nbOfPause = 999; } }
public void OnScoreDidChange(int scoreBeforeMultiplier) { try { gameStatus.score = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(scoreBeforeMultiplier, gameStatus.modifierMultiplier); int currentMaxScoreBeforeMultiplier = ScoreController.MaxScoreForNumberOfNotes(gameStatus.passedNotes); gameStatus.currentMaxScore = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(currentMaxScoreBeforeMultiplier, gameStatus.modifierMultiplier); RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore); gameStatus.rank = RankModel.GetRankName(rank); }catch (Exception ex) { Plugin.Log("EXception in score change: " + ex); } }
public void SetSongInfo(IDifficultyBeatmap songInfo, LevelCompletionResults results) { if (lastSong != songInfo) { Misc.Logger.Info("Updating song info on results screen!"); lastSong = songInfo; _songNameText.text = $"{songInfo.level.songName} <size=80%>{songInfo.level.songSubName}</size>"; _scoreText.text = ScoreFormatter.Format(results.score); _difficultyText.text = songInfo.difficulty.Name(); _rankText.text = RankModel.GetRankName(results.rank); _goodCutsText.text = $"{results.goodCutsCount}<size=50%> / {songInfo.beatmapData.notesCount}"; _fullComboText.gameObject.SetActive(results.fullCombo); if (IllusionInjector.PluginManager.Plugins.Any(x => x.Name == "BeatSaver Downloader")) { _firstVote = true; _favButton.onClick.RemoveAllListeners(); _favButton.onClick.AddListener(() => ToggleFavorite(songInfo.level.levelID)); BeatSaverDownloaderHelper.LoadDownloaderConfig(); _favButton.interactable = true; _favButton.SetButtonIcon(BeatSaverDownloaderHelper.favoriteSongs.Any(x => x == songInfo.level.levelID) ? Sprites.removeFromFavorites : Sprites.addToFavorites); VoteType vote = BeatSaverDownloaderHelper.GetVoteForSong(songInfo.level.levelID); _upvoteButton.interactable = false; _downvoteButton.interactable = false; _ratingText.text = "LOADING..."; SongDownloader.Instance.RequestSongByLevelID(songInfo.level.levelID.Substring(0, 32), (song) => { _ratingText.text = (int.Parse(song.upvotes) - int.Parse(song.downvotes)).ToString(); _upvoteButton.interactable = (vote != VoteType.Upvote && BeatSaverDownloaderHelper.apiAccessToken != BeatSaverDownloaderHelper.apiTokenPlaceholder); _downvoteButton.interactable = (vote != VoteType.Downvote && BeatSaverDownloaderHelper.apiAccessToken != BeatSaverDownloaderHelper.apiTokenPlaceholder); _upvoteButton.onClick.RemoveAllListeners(); _downvoteButton.onClick.RemoveAllListeners(); _upvoteButton.onClick.AddListener(() => StartCoroutine(VoteForSong(song.id, songInfo.level.levelID, true))); _downvoteButton.onClick.AddListener(() => StartCoroutine(VoteForSong(song.id, songInfo.level.levelID, false))); }); } } }
private void UpdateClassicModeText() { RankModel.Rank immediateRank = relativeScoreAndImmediateRank.immediateRank; float relativeScore = (relativeScoreAndImmediateRank.relativeScore) * 100.0f; if (Math.Floor(relativeScore) != Math.Floor(prevRelativeScore)) { Color currentColor = GetColorForRelativeScore(relativeScore); } prevRelativeScore = relativeScore; if (immediateRank != prevImmediateRank) { rankText.text = RankModel.GetRankName(immediateRank); prevImmediateRank = immediateRank; } int decimalPrecision = 2; relativeScoreText.text = $"{relativeScore.ToString($"F{decimalPrecision}")}%"; }
static bool Prefix(ref ImmediateRankUIPanel __instance, ref RelativeScoreAndImmediateRankCounter ____relativeScoreAndImmediateRankCounter, ref RankModel.Rank ____prevImmediateRank, ref float ____prevRelativeScore, ref TextMeshProUGUI ____rankText, ref TextMeshProUGUI ____relativeScoreText) { if (!CountersController.settings.Enabled) { return(true); //Dont use Score Counters decimal precision if the plugin is disabled } if (model == null) { model = CountersController.settings.scoreConfig; } RankModel.Rank rank = ____relativeScoreAndImmediateRankCounter.immediateRank; if (rank != ____prevImmediateRank) { ____rankText.text = model.Mode != ICounterMode.BaseGame ? $"\n{RankModel.GetRankName(rank)}" : RankModel.GetRankName(rank); ____prevImmediateRank = rank; } if (model.CustomRankColors) //checks if custom rank colors is enabled { if (RankModel.GetRankName(rank) == "SS") { ColorUtility.TryParseHtmlString(model.SSColor, out Color RankColor); //converts config hex color to unity RGBA value ____rankText.color = RankColor; //sets color of ranktext } if (RankModel.GetRankName(rank) == "S") { ColorUtility.TryParseHtmlString(model.SColor, out Color RankColor); ____rankText.color = RankColor; } if (RankModel.GetRankName(rank) == "A") { ColorUtility.TryParseHtmlString(model.AColor, out Color RankColor); ____rankText.color = RankColor; } if (RankModel.GetRankName(rank) == "B") { ColorUtility.TryParseHtmlString(model.BColor, out Color RankColor); ____rankText.color = RankColor; } if (RankModel.GetRankName(rank) == "C") { ColorUtility.TryParseHtmlString(model.CColor, out Color RankColor); ____rankText.color = RankColor; } if (RankModel.GetRankName(rank) == "D") { ColorUtility.TryParseHtmlString(model.DColor, out Color RankColor); ____rankText.color = RankColor; } if (RankModel.GetRankName(rank) == "E") { ColorUtility.TryParseHtmlString(model.EColor, out Color RankColor); ____rankText.color = RankColor; } } float score = ____relativeScoreAndImmediateRankCounter.relativeScore; if (Mathf.Abs(____prevRelativeScore - score) >= 0.001f) { float roundedScore = (float)Math.Round((decimal)score * 100, model.DecimalPrecision); ____relativeScoreText.text = $"{roundedScore.ToString($"F{model.DecimalPrecision}")}%"; } return(false); }
private void RelativeScoreAndImmediateRankCounter_relativeScoreOrImmediateRankDidChangeEvent() { this.gameStatus.relativeScore = this.relativeScoreAndImmediateRankCounter.relativeScore; this.gameStatus.rank = RankModel.GetRankName(this.relativeScoreAndImmediateRankCounter.immediateRank); this.statusManager.EmitStatusUpdate(ChangedProperty.Performance, BeatSaberEvent.ScoreChanged); }