Exemple #1
0
        protected void GenerateBasicText(string labelText, out TMP_Text count)
        {
            TMP_Text label = CanvasUtility.CreateTextFromSettings(Settings);

            label.fontSize = 3;
            label.text     = labelText;

            count          = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -0.4f, 0));
            count.text     = "0";
            count.fontSize = 4;
        }
Exemple #2
0
        protected void GenerateBasicText(string labelText, out TMP_Text count)
        {
            TMP_Text label = CanvasUtility.CreateTextFromSettings(Settings);

            label.fontSize = 3;
            label.text     = labelText;

            HUDCanvas canvas = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID);

            count          = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -0.4f * (10 / canvas.PositionScale), 0));
            count.text     = "0";
            count.fontSize = 4;
        }
        public override void CounterInit()
        {
            timeText          = CanvasUtility.CreateTextFromSettings(Settings);
            timeText.fontSize = 4;

            length  = atsc.songLength;
            songBPM = gcssd.difficultyBeatmap.level.beatsPerMinute;

            if (coreGameHUD != null)
            {
                GameObject baseGameProgress = SongProgressPanelGO(ref coreGameHUD);
                UnityEngine.Object.Destroy(baseGameProgress); // I'm sorry, little one.
            }

            if (Settings.Mode != ProgressMode.Percent)
            {
                var canvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);
                if (canvas != null)
                {
                    ImageView backgroundImage = CreateRing(canvas);
                    backgroundImage.rectTransform.anchoredPosition = timeText.rectTransform.anchoredPosition;
                    backgroundImage.CrossFadeAlpha(0.05f, 1f, false);
                    backgroundImage.transform.localScale = ringSize / 10;
                    backgroundImage.type = Image.Type.Simple;

                    progressRing = CreateRing(canvas);
                    progressRing.rectTransform.anchoredPosition = timeText.rectTransform.anchoredPosition;
                    progressRing.transform.localScale           = ringSize / 10;
                }
            }
        }
Exemple #4
0
        public override void CounterInit()
        {
            ColorUtility.TryParseHtmlString("#FFA500", out orange);

            modifiersModel = SCGameplayModsModel(ref scoreController);
            IDifficultyBeatmap beatmap = data.difficultyBeatmap;
            int maxRawScore            = ScoreModel.MaxRawScoreForNumberOfNotes(beatmap.beatmapData.notesCount);

            maxPossibleScore = ScoreModel.GetModifiedScoreForGameplayModifiersScoreMultiplier(maxRawScore,
                                                                                              modifiersModel.GetTotalMultiplier(data.gameplayModifiers));
            stats     = playerDataModel.playerData.GetPlayerLevelStatsData(beatmap);
            highScore = stats.highScore;

            if (scoreConfig.Enabled && Settings.UnderScore)
            {
                counter = CanvasUtility.CreateTextFromSettings(scoreConfig, SCORE_COUNTER_OFFSET);
            }
            else
            {
                counter = CanvasUtility.CreateTextFromSettings(Settings);
            }
            counter.alignment = TextAlignmentOptions.Top;
            counter.fontSize  = Settings.TextSize;

            SetPersonalBest((float)highScore / maxPossibleScore);
        }
        public override void CounterInit()
        {
            right = saberManager.rightSaber;
            left  = saberManager.leftSaber;

            switch (Settings.Mode)
            {
            case SpeedMode.Average:
            case SpeedMode.SplitAverage:
                GenerateBasicText("Average Speed", out averageCounter);
                break;

            case SpeedMode.Top5Sec:
                GenerateBasicText("Recent Top Speed", out fastestCounter);
                break;

            case SpeedMode.Both:
            case SpeedMode.SplitBoth:
                GenerateBasicText("Average Speed", out averageCounter);
                var label = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -1, 0));
                label.fontSize      = 3;
                label.text          = "Recent Top Speed";
                fastestCounter      = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -1.4f, 0));
                fastestCounter.text = "0";
                break;
            }
        }
Exemple #6
0
        public override void CounterInit()
        {
            string defaultValue = FormatLabel(0, 0, Settings.AveragePrecision);

            var label = CanvasUtility.CreateTextFromSettings(Settings);

            label.text     = "Average Cut";
            label.fontSize = 3;

            Vector3 leftOffset             = Vector3.up * -0.2f;
            TextAlignmentOptions leftAlign = TextAlignmentOptions.Top;

            if (Settings.SeparateSaberCounts)
            {
                cutCounterRight             = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0.2f, -0.2f, 0));
                cutCounterRight.lineSpacing = -26;
                cutCounterRight.text        = Settings.SeparateCutValues ? $"{defaultValue}\n{defaultValue}\n{defaultValue}" : $"{defaultValue}";
                cutCounterRight.alignment   = TextAlignmentOptions.TopLeft;

                leftOffset = new Vector3(-0.2f, -0.2f, 0);
                leftAlign  = TextAlignmentOptions.TopRight;
            }

            cutCounterLeft             = CanvasUtility.CreateTextFromSettings(Settings, leftOffset);
            cutCounterLeft.lineSpacing = -26;
            cutCounterLeft.text        = Settings.SeparateCutValues ? $"{defaultValue}\n{defaultValue}\n{defaultValue}" : $"{defaultValue}";
            cutCounterLeft.alignment   = leftAlign;

            scoreController.scoringForNoteFinishedEvent += ScoreController_scoringForNoteFinishedEvent;
        }
        private void InitClassicMode()
        {
            // Yeah this is required.
            // If the Score Counter is all alone on its own Canvas with nothing to accompany them,
            // I need to give 'em a friend or else they get shy and hide away in the void.
            _ = CanvasUtility.CreateTextFromSettings(Settings, null);

            ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>();
            TextMeshProUGUI   old = ScoreUIText(ref scoreUIController);

            // Setup Score Text
            GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD);

            relativeScoreText       = baseGameScore.GetComponent <TextMeshProUGUI>();
            relativeScoreText.color = Color.white;

            // Setup Rank Text
            GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD);

            rankText       = baseGameRank.GetComponent <TextMeshProUGUI>();
            rankText.color = Color.white;

            // Set up parenting
            Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);

            old.rectTransform.SetParent(currentCanvas.transform, true);
            baseGameScore.transform.SetParent(old.transform, true);

            // Hide score if we're not using it.
            if (!Configuration.Instance.showScore)
            {
                UnityEngine.Object.Destroy(baseGameScore.gameObject);
            }

            // Adjust font sizes.
            // TODO: Pull this from config?
            relativeScoreText.fontSize = 10;
            rankText.fontSize          = 30;


            baseGameRank.transform.SetParent(old.transform, true);
            RectTransform pointsTextTransform = old.rectTransform;
            HUDCanvas     currentSettings     = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID);
            Vector2       anchoredPos         = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale));

            pointsTextTransform.localPosition    = anchoredPos * currentSettings.PositionScale;
            pointsTextTransform.localPosition    = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0);
            pointsTextTransform.localEulerAngles = Vector3.zero;

            UnityEngine.Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>());

            InitPercentageRing();

            // Shift text into proper positions
            rankText.rectTransform.anchoredPosition          += rankScoreOffset;
            relativeScoreText.rectTransform.anchoredPosition += rankScoreOffset;

            //relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateClassicModeText;
            UpdateClassicModeText();
        }
        public override void CounterInit()
        {
            // Yeah this is required.
            // If the Score Counter is all alone on its own Canvas with nothing to accompany them,
            // I need to give 'em a friend or else they get shy and hide away in the void.
            _ = CanvasUtility.CreateTextFromSettings(Settings, null);

            ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>();
            TextMeshProUGUI   old           = ScoreUIText(ref scoreUIController);
            GameObject        baseGameScore = RelativeScoreGO(ref coreGameHUD);

            relativeScoreText       = baseGameScore.GetComponent <TextMeshProUGUI>();
            relativeScoreText.color = Color.white;
            GameObject baseGameRank = ImmediateRankGO(ref coreGameHUD);

            rankText       = baseGameRank.GetComponent <TextMeshProUGUI>();
            rankText.color = Color.white;

            Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);

            old.rectTransform.SetParent(currentCanvas.transform, true);
            baseGameScore.transform.SetParent(old.transform, true);
            baseGameRank.transform.SetParent(old.transform, true);

            if (!mainConfig.ItalicText)
            {
                old.fontStyle = relativeScoreText.fontStyle = rankText.fontStyle = FontStyles.Normal;
                Vector3 localPosition = relativeScoreText.rectTransform.localPosition;
                relativeScoreText.rectTransform.localPosition = new Vector3(0, localPosition.y, localPosition.z);
                localPosition = rankText.rectTransform.localPosition;
                rankText.rectTransform.localPosition = new Vector3(0, localPosition.y, localPosition.z);
            }

            switch (Settings.Mode)
            {
            case ScoreMode.RankOnly:
                Object.Destroy(baseGameScore.gameObject);
                break;

            case ScoreMode.ScoreOnly:
                Object.Destroy(baseGameRank.gameObject);
                break;
            }

            RectTransform pointsTextTransform = old.rectTransform;

            HUDCanvas currentSettings = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID);

            Vector2 anchoredPos = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale));

            pointsTextTransform.localPosition    = anchoredPos * currentSettings.PositionScale;
            pointsTextTransform.localPosition    = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0);
            pointsTextTransform.localEulerAngles = Vector3.zero;

            Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>());

            relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdateText;

            UpdateText();
        }
Exemple #9
0
        public override void CounterInit()
        {
            right = playerController.rightSaber;
            left  = playerController.leftSaber;

            switch (Settings.Mode)
            {
            case SpeedMode.Average:
            case SpeedMode.SplitAverage:
                GenerateBasicText("Average Speed", out averageCounter);
                break;

            case SpeedMode.Top5Sec:
                GenerateBasicText("Recent Top Speed", out fastestCounter);
                SharedCoroutineStarter.instance.StartCoroutine(FastestSpeed());
                break;

            case SpeedMode.Both:
            case SpeedMode.SplitBoth:
                GenerateBasicText("Average Speed", out averageCounter);
                var label = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -1, 0));
                label.fontSize = 3;
                label.text     = "Recent Top Speed";
                fastestCounter = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -1.4f, 0));
                SharedCoroutineStarter.instance.StartCoroutine(FastestSpeed());
                break;
            }
        }
Exemple #10
0
        public override void CounterInit()
        {
            if (setupData.practiceSettings != null && setupData.practiceSettings.startInAdvanceAndClearNotes)
            {
                float startTime = setupData.practiceSettings.startSongTime;
                // This LINQ statement is to ensure compatibility with Practice Mode / Practice Plugin
                notesLeft = noteCountProcessor.Data.Count(x => x.time > startTime);
            }
            else
            {
                notesLeft = noteCountProcessor.NoteCount;
            }

            if (Settings.LabelAboveCount)
            {
                GenerateBasicText("Notes Remaining", out counter);
                counter.text = notesLeft.ToString();
            }
            else
            {
                counter          = CanvasUtility.CreateTextFromSettings(Settings);
                counter.text     = $"Notes Remaining: {notesLeft}";
                counter.fontSize = 2;
            }
        }
        public override void CounterInit()
        {
            try
            {
                _logger.Debug("Attempting to Initialize FPS Counter");

                _targetFramerate = (int)XRDevice.refreshRate;
                _logger.Debug($"Target framerate = {_targetFramerate}");

                _counterText             = CanvasUtility.CreateTextFromSettings(Settings);
                _counterText.color       = Color.white;
                _counterText.fontSize    = 2.5f;
                _counterText.lineSpacing = -50f;

                if (!_config.ShowRing)
                {
                    return;
                }

                var canvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);
                if (canvas == null)
                {
                    return;
                }

                _ringImage = _fpsCounterUtils.CreateRing(canvas);
                _ringImage.rectTransform.anchoredPosition = _counterText.rectTransform.anchoredPosition;
                _ringImage.transform.localScale           = _ringSize / 10;
            }
            catch (Exception ex)
            {
                _logger.Error("FPS Counter Done");
                _logger.Error(ex);
            }
        }
Exemple #12
0
        public override void CounterInit()
        {
            modifiersModel = SCGameplayModsModel(ref scoreController);
            IDifficultyBeatmap beatmap = data.difficultyBeatmap;
            int maxRawScore            = ScoreModel.MaxRawScoreForNumberOfNotes(noteCountProcessor.NoteCount);

            maxPossibleScore = ScoreModel.GetModifiedScoreForGameplayModifiersScoreMultiplier(maxRawScore,
                                                                                              modifiersModel.GetTotalMultiplier(data.gameplayModifiers));
            stats     = playerDataModel.playerData.GetPlayerLevelStatsData(beatmap);
            highScore = stats.highScore;

            if (scoreConfig.Enabled && Settings.UnderScore)
            {
                HUDCanvas scoreCanvas = CanvasUtility.GetCanvasSettingsFromID(scoreConfig.CanvasID);
                counter = CanvasUtility.CreateTextFromSettings(scoreConfig, SCORE_COUNTER_OFFSET * (3f / scoreCanvas.PositionScale));
            }
            else
            {
                counter = CanvasUtility.CreateTextFromSettings(Settings);
            }
            counter.alignment = TextAlignmentOptions.Top;
            counter.fontSize  = Settings.TextSize;

            pbRatio = (float)highScore / maxPossibleScore;

            SetPersonalBest((float)highScore / maxPossibleScore);
            ScoreUpdated(0);
        }
        public override void CounterInit()
        {
            string defaultValue = FormatTimeDependence(0, GetDecimals());
            var    label        = CanvasUtility.CreateTextFromSettings(Settings);

            label.text     = "Time Dependence";
            label.fontSize = 3;

            Vector3 leftOffset             = Vector3.up * -0.2f;
            TextAlignmentOptions leftAlign = TextAlignmentOptions.Top;

            if (Configuration.Instance.separateSaber)
            {
                _counterRight             = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0.2f, -0.2f, 0));
                _counterRight.lineSpacing = -26;
                _counterRight.text        = defaultValue;
                _counterRight.alignment   = TextAlignmentOptions.TopLeft;

                leftOffset = new Vector3(-0.2f, -0.2f, 0);
                leftAlign  = TextAlignmentOptions.TopRight;
            }

            _counterLeft             = CanvasUtility.CreateTextFromSettings(Settings, leftOffset);
            _counterLeft.lineSpacing = -26;
            _counterLeft.text        = defaultValue;
            _counterLeft.alignment   = leftAlign;
        }
Exemple #14
0
        public override void CounterInit()
        {
            IDifficultyBeatmap beatmap = data.difficultyBeatmap;

            maxPossibleScore = ScoreModel.ComputeMaxMultipliedScoreForBeatmap(beatmapData);

            stats     = playerDataModel.playerData.GetPlayerLevelStatsData(beatmap);
            highScore = stats.highScore;

            if (scoreConfig.Enabled && Settings.UnderScore)
            {
                HUDCanvas scoreCanvas = CanvasUtility.GetCanvasSettingsFromID(scoreConfig.CanvasID);
                counter = CanvasUtility.CreateTextFromSettings(scoreConfig, SCORE_COUNTER_OFFSET * (3f / scoreCanvas.PositionScale));
            }
            else
            {
                counter = CanvasUtility.CreateTextFromSettings(Settings);
            }
            counter.alignment = TextAlignmentOptions.Top;
            counter.fontSize  = Settings.TextSize;

            pbRatio = (float)highScore / maxPossibleScore;

            SetPersonalBest(pbRatio);
            ScoreUpdated(0);
        }
Exemple #15
0
        public override void CounterInit()
        {
            var header = CanvasUtility.CreateTextFromSettings(Settings);

            header.text     = "William Gay";
            header.fontSize = 3;

            williamGayness = CanvasUtility.CreateTextFromSettings(Settings, new Vector3(0, -0.4f, 0));
        }
Exemple #16
0
        public override void CounterInit()
        {
            Logger.log.Debug("Creating nightscout counter...");
            bgText       = CanvasUtility.CreateTextFromSettings(Settings);
            bgText.text  = "--- mg/dl";
            bgText.color = Color.white;
            UpdateText(null, NightscoutDataService.cachedData);

            NightscoutDataService.BGEvent += UpdateText;
        }
        private void InitPercentMode()
        {
            // Required. We need to get a handle to the game's default score counter and destroy it.
            _ = CanvasUtility.CreateTextFromSettings(Settings, null);
            ScoreUIController scoreUIController = coreGameHUD.GetComponentInChildren <ScoreUIController>();
            TextMeshProUGUI   old = ScoreUIText(ref scoreUIController);

            GameObject baseGameScore = RelativeScoreGO(ref coreGameHUD);
            GameObject baseGameRank  = ImmediateRankGO(ref coreGameHUD);

            // Set up parenting
            Canvas currentCanvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);

            old.rectTransform.SetParent(currentCanvas.transform, true);
            baseGameScore.transform.SetParent(old.transform, true);
            baseGameRank.transform.SetParent(old.transform, true);

            // Destroy Score
            UnityEngine.Object.Destroy(baseGameScore.gameObject);

            // Destroy Rank
            UnityEngine.Object.Destroy(baseGameRank.gameObject);

            if (!Configuration.Instance.showScore)
            {
                old.fontSize = 0;
            }

            percentMajorText          = CanvasUtility.CreateTextFromSettings(Settings);
            percentMajorText.fontSize = 7;
            percentMinorText          = CanvasUtility.CreateTextFromSettings(Settings);
            percentMinorText.fontSize = 3;

            RectTransform pointsTextTransform = old.rectTransform;
            HUDCanvas     currentSettings     = CanvasUtility.GetCanvasSettingsFromID(Settings.CanvasID);
            Vector2       anchoredPos         = CanvasUtility.GetAnchoredPositionFromConfig(Settings) + (offset * (3f / currentSettings.PositionScale));

            pointsTextTransform.localPosition    = anchoredPos * currentSettings.PositionScale;
            pointsTextTransform.localPosition    = new Vector3(pointsTextTransform.localPosition.x, pointsTextTransform.localPosition.y, 0);
            pointsTextTransform.localEulerAngles = Vector3.zero;
            UnityEngine.Object.Destroy(coreGameHUD.GetComponentInChildren <ImmediateRankUIPanel>());

            InitPercentageRing();

            percentMajorText.rectTransform.anchoredPosition += new Vector2(0.0f, 0.7f);
            percentMinorText.rectTransform.anchoredPosition += new Vector2(0.0f, -3.0f);

            prevPercentMajor = -1;
            prevPercentMinor = -1;
            //relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += UpdatePercentModeText;
            UpdatePercentModeText();
        }
        public override void CounterInit()
        {
            length  = atsc.songLength;
            songBPM = gcssd.difficultyBeatmap.level.beatsPerMinute;

            timeText          = CanvasUtility.CreateTextFromSettings(Settings);
            timeText.fontSize = 4;

            // Set default text, which is visible in Multiplayer
            // Missing cases are covered by the default "_" case
            timeText.text = Settings.Mode switch
            {
                ProgressMode.Percent when Settings.ProgressTimeLeft => "100%",
                                                   ProgressMode.Percent when !Settings.ProgressTimeLeft => "0%",

                                                   ProgressMode.TimeInBeats when Settings.ProgressTimeLeft
                => $"{Mathf.Round(songBPM / 60 * length / 0.25f) * 0.25f:F2}",
                                                   ProgressMode.TimeInBeats when !Settings.ProgressTimeLeft => "0.00",

                                                   _ when Settings.ProgressTimeLeft => $"{atsc.songLength:F2}",
                                                   _ when !Settings.ProgressTimeLeft => "0:00"
            };

            // I'm sorry, little one.
            GameObject baseGameProgress = SongProgressPanelGO(ref coreGameHUD);

            UnityEngine.Object.Destroy(baseGameProgress);

            if (Settings.Mode != ProgressMode.Percent)
            {
                var canvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);
                if (canvas != null)
                {
                    ImageView backgroundImage = CreateRing(canvas);
                    backgroundImage.rectTransform.anchoredPosition = timeText.rectTransform.anchoredPosition;
                    backgroundImage.CrossFadeAlpha(0.05f, 1f, false);
                    backgroundImage.transform.localScale = ringSize / 10;
                    backgroundImage.type = Image.Type.Simple;

                    progressRing = CreateRing(canvas);
                    progressRing.rectTransform.anchoredPosition = timeText.rectTransform.anchoredPosition;
                    progressRing.transform.localScale           = ringSize / 10;

                    // Start progress ring at 100% or 0%, depending on how the ring will behave
                    progressRing.fillAmount = (Settings.ProgressTimeLeft && Settings.IncludeRing) ? 1 : 0;
                }
            }
        }
Exemple #19
0
        private bool CreateCounter()
        {
            _logger.Info("Creating counter");
            _counter          = CanvasUtility.CreateTextFromSettings(Settings);
            _counter.fontSize = 3;
            _counter.text     = "";

            var canvas = CanvasUtility.GetCanvasFromID(Settings.CanvasID);

            if (canvas == null)
            {
                Logger.logger.Warn("Cannot find counters+ canvas");
                return(false);
            }

            var counter = AssetBundleManager.SetupCustomCounter();

            _customCounter     = counter.Icon;
            _customCounterText = counter.Numbers;

            if (_customCounter == null || _customCounterText == null)
            {
                _logger.Error("Cannot create custom counter");
                return(false);
            }

            // position the counter as the counters+ one
            _customCounter.transform.localScale = Vector3.one / 30;
            _customCounter.transform.SetParent(canvas.transform, false);
            _customCounter.GetComponent <RectTransform>().anchoredPosition =
                _counter.rectTransform.anchoredPosition;
            _customCounter.transform.localPosition -= new Vector3(2, 0, 0); // recenter

            OnHRUpdate(null, new HRUpdateEventArgs(BPM.Instance.Bpm));      // give it an initial value

            if (counter.CurrentCanvas != null)
            {
                // destroy the unused game obj
                Object.Destroy(counter.CurrentCanvas);
            }
            HRController.OnHRUpdate += OnHRUpdate;
            return(true);
        }
Exemple #20
0
        public override void CounterInit()
        {
            var id = SongDataUtils.GetHash(difficultyBeatmap.level.levelID);

            songID = new SongID(id, difficultyBeatmap.difficulty);

            // Don't show anything for unranked songs or if data not initialized
            if (!ppUtils.DataInitialized() || !ppUtils.IsRanked(songID))
            {
                return;
            }

            var gameplayModifiersModelSO = IPA.Utilities.FieldAccessor <RelativeScoreAndImmediateRankCounter, GameplayModifiersModelSO> .Get(relativeScoreAndImmediateRank, "_gameplayModifiersModel");

            GameplayModifiers updatedModifiers = ppUtils.AllowedPositiveModifiers(songID) ?
                                                 gameplayModifiers : GameplayModifierUtils.RemovePositiveModifiers(gameplayModifiers);

            _multiplier = GameplayModifierUtils.CalculateMultiplier(gameplayModifiersModelSO, updatedModifiers);

            counter          = CanvasUtility.CreateTextFromSettings(Settings);
            counter.fontSize = 3;

            relativeScoreAndImmediateRank.relativeScoreOrImmediateRankDidChangeEvent += ScoreUpdated;
            UpdateCounterText(ppUtils.CalculatePP(songID, _multiplier, ppUtils.AllowedPositiveModifiers(songID)));

            if (PluginSettings.Instance.relativeGain)
            {
                var highScore = playerDataModel.playerData.GetPlayerLevelStatsData(difficultyBeatmap).highScore;
                if (highScore == 0)
                {
                    _pbPP = 0;
                    return;
                }

                var maxScore = ScoreModel.ComputeMaxMultipliedScoreForBeatmap(beatmapData);
                var acc      = (float)highScore / maxScore;
                _pbPP = ppUtils.CalculatePP(songID, acc, ppUtils.AllowedPositiveModifiers(songID));
            }
        }
Exemple #21
0
        public void UpdateMockCounter(ConfigModel settings)
        {
            if (activeMockCounters.TryGetValue(settings, out TMP_Text old))
            {
                if (old != null)
                {
                    Object.Destroy(old.gameObject);
                }
                activeMockCounters.Remove(settings);
            }

            if (!settings.Enabled)
            {
                return;
            }

            TMP_Text @new = canvasUtility.CreateTextFromSettings(settings);

            @new.text  = (settings is CustomConfigModel custom) ? custom.AttachedCustomCounter.Name : settings.DisplayName;
            @new.color = highlightedConfig == settings ? Color.yellow : Color.white;
            activeMockCounters.Add(settings, @new);
        }
Exemple #22
0
 private void CreateCounter()
 {
     _logger.Info("Creating counter");
     _counter          = CanvasUtility.CreateTextFromSettings(Settings);
     _counter.fontSize = 3;
 }