private void InitLiveTokens()
        {
            liveTokens["acc"]             = new TokenWithFormat(_rawData.Play.Acc, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["300"]             = new TokenWithFormat(_rawData.Play.C300, TokenType.Live, "{0}", (ushort)0);
            liveTokens["100"]             = new TokenWithFormat(_rawData.Play.C100, TokenType.Live, "{0}", (ushort)0);
            liveTokens["50"]              = new TokenWithFormat(_rawData.Play.C50, TokenType.Live, "{0}", (ushort)0);
            liveTokens["miss"]            = new TokenWithFormat(_rawData.Play.CMiss, TokenType.Live, "{0}", (ushort)0);
            liveTokens["time"]            = new TokenWithFormat(0d, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["combo"]           = new TokenWithFormat(_rawData.Play.Combo, TokenType.Live, "{0}", (ushort)0);
            liveTokens["CurrentMaxCombo"] = new TokenWithFormat(_rawData.Play.MaxCombo, TokenType.Live, "{0}", (ushort)0);
            liveTokens["PlayerHp"]        = new TokenWithFormat(_rawData.Play.Hp, TokenType.Live, "{0:0.00}", 0d);

            liveTokens["PpIfMapEndsNow"]       = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.PpIfMapEndsNow].Current, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["AimPpIfMapEndsNow"]    = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.AimPpIfMapEndsNow].Current, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["SpeedPpIfMapEndsNow"]  = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.SpeedPpIfMapEndsNow].Current, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["AccPpIfMapEndsNow"]    = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.AccPpIfMapEndsNow].Current, TokenType.Live, "{0:0.00}", 0d);
            liveTokens["StrainPpIfMapEndsNow"] = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.StrainPpIfMapEndsNow].Current, TokenType.Live, "{0:0.00}", 0d);

            liveTokens["PpIfRestFced"] = new TokenWithFormat(InterpolatedValues[InterpolatedValueName.PpIfRestFced].Current, TokenType.Live, "{0:0.00}", 0d);
        }
Exemple #2
0
        public Tokens GetMapReplacements(MapSearchResult map)
        {
            var ret = new Tokens
            {
                { "GameMode", new Token(null) },
                { "MaxCombo", new Token(null) },

                { "SSPP", new Token(null) },
                { "99.9PP", new Token(null) },
                { "99PP", new Token(null) },
                { "98PP", new Token(null) },
                { "95PP", new Token(null) },
                { "90PP", new Token(null) },


                { "1 000 000PP", new Token(null) },
                { "990 000PP", new Token(null) },
                { "950 000PP", new Token(null) },
                { "900 000PP", new Token(null) },
                { "800 000PP", new Token(null) },
                { "700 000PP", new Token(null) },
                { "600 000PP", new Token(null) },

                { "mMod", new Token(null) },

                { "mSSPP", new Token(null) },
                { "m99.9PP", new Token(null) },
                { "m99PP", new Token(null) },
                { "m98PP", new Token(null) },
                { "m95PP", new Token(null) },
                { "m90PP", new Token(null) },

                { "m1 000 000PP", new Token(null) },
                { "m990 000PP", new Token(null) },
                { "m950 000PP", new Token(null) },
                { "m900 000PP", new Token(null) },
                { "m800 000PP", new Token(null) },
                { "m700 000PP", new Token(null) },
                { "m600 000PP", new Token(null) },
            };

            if (!map.FoundBeatmaps ||
                !map.BeatmapsFound[0].IsValidBeatmap(_settings, out var mapLocation)
                )
            {
                return(ret);
            }


            var workingBeatmap = new ProcessorWorkingBeatmap(mapLocation);

            var playMode = (PlayMode)PpCalculatorHelpers.GetRulesetId(workingBeatmap.RulesetID, map.PlayMode.HasValue ? (int?)map.PlayMode : null);

            _ppCalculator = PpCalculatorHelpers.GetPpCalculator((int)playMode, mapLocation, _ppCalculator);

            if (_ppCalculator == null)
            {
                return(ret);//Ctb not supported :(
            }
            if (playMode == PlayMode.OsuMania)
            {
                _ppCalculator.Score = 1_000_000;
            }
            else
            {
                _ppCalculator.Score = 0;
            }

            _ppCalculator.Mods = null;

            ret["GameMode"] = new TokenWithFormat(playMode.ToString());

            string mods = "";

            if (playMode == PlayMode.OsuMania)
            {
                ret["1 000 000PP"] = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 1_000_000), format: PpFormat);
                ret["990 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 990_000), format: PpFormat);
                ret["950 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 950_000), format: PpFormat);
                ret["900 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 900_000), format: PpFormat);
                ret["800 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 800_000), format: PpFormat);
                ret["700 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 700_000), format: PpFormat);
                ret["600 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 600_000), format: PpFormat);
            }
            else
            {
                ret["SSPP"]   = new TokenWithFormat(GetPp(_ppCalculator, 100d), format: PpFormat);
                ret["99.9PP"] = new TokenWithFormat(GetPp(_ppCalculator, 99.9d), format: PpFormat);
                ret["99PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 99d), format: PpFormat);
                ret["98PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 98d), format: PpFormat);
                ret["95PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 95d), format: PpFormat);
                ret["90PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 90d), format: PpFormat);
            }

            ret["MaxCombo"] = new TokenWithFormat(_ppCalculator.GetMaxCombo());

            string modsStr;

            if (map.Action == OsuStatus.Playing || map.Action == OsuStatus.Watching)
            {
                mods           = map.Mods?.WorkingMods ?? "";
                modsStr        = map.Mods?.ShownMods ?? "";
                _lastShortMods = mods;
                _lastModsStr   = modsStr;
            }
            else
            {
                mods    = _lastShortMods;
                modsStr = _lastModsStr;
            }

            ret["mMod"] = new Token(modsStr);

            if (playMode == PlayMode.OsuMania)
            {
                ret["m1 000 000PP"] = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 1_000_000), format: PpFormat);
                ret["m990 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 990_000), format: PpFormat);
                ret["m950 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 950_000), format: PpFormat);
                ret["m900 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 900_000), format: PpFormat);
                ret["m800 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 800_000), format: PpFormat);
                ret["m700 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 700_000), format: PpFormat);
                ret["m600 000PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 0, mods, 600_000), format: PpFormat);
            }
            else
            {
                ret["mSSPP"]   = new TokenWithFormat(GetPp(_ppCalculator, 100d, mods), format: PpFormat);
                ret["m99.9PP"] = new TokenWithFormat(GetPp(_ppCalculator, 99.9d, mods), format: PpFormat);
                ret["m99PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 99d, mods), format: PpFormat);
                ret["m98PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 98d, mods), format: PpFormat);
                ret["m95PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 95d, mods), format: PpFormat);
                ret["m90PP"]   = new TokenWithFormat(GetPp(_ppCalculator, 90d, mods), format: PpFormat);
            }

            return(ret);
        }