Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
        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);
            }
        }
Exemplo n.º 7
0
        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}")}%";
        }
Exemplo n.º 8
0
        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");
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 11
0
        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}")}%";
        }
Exemplo n.º 13
0
        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);
 }