public static PPCalcSTDReport CountStdPPC(int BeatmapID, long Combo = 0, long s100 = 0, long s50 = 0, long Misses = 0, double Acc = 0, int EnabledMods = 0) { Beatmap b = Global.Beatmaps.LoadBeatmap(BeatmapID); string mods = EnabledMods == 0 ? "" : " -m " + Commands.osu.GetShortMods(EnabledMods, " -m "); if (mods == " -m ") { mods = ""; } string argBase = "simulate osu " + Path.Combine(Global.Beatmaps.Folder, BeatmapID + ".osu") + mods + " -j "; string acc = Acc == 0 ? $" -G { s100 } -M { s50 }" : $" -a { Acc }"; string combo = Combo == 0 ? "" : $"-c { Combo } "; string ppcRaw = Process.Start(GenerateInfo(argBase + $"{combo}-X { Misses }{ acc }")).StandardOutput.ReadToEnd(); PpcOutput ppc = JsonConvert.DeserializeObject <PpcOutput>(ppcRaw); string ppcRawFc = Process.Start(GenerateInfo(argBase + $"-X 0 -a { ppc.Score.Accuracy }")).StandardOutput.ReadToEnd(); string ppcRawMax = Process.Start(GenerateInfo(argBase)).StandardOutput.ReadToEnd(); PpcOutput ppcFc = JsonConvert.DeserializeObject <PpcOutput>(ppcRawFc); PpcOutput ppcMax = JsonConvert.DeserializeObject <PpcOutput>(ppcRawMax); return(new PPCalcSTDReport(ppc, ppcFc, ppcMax, b)); }
public PPCalcSTDReport(PpcOutput ppc, PpcOutput ppcFc, PpcOutput ppcMax, Beatmap map) { Accuracy = ppc.Score.Accuracy; MaxCombo = ppcMax.Score.Combo; TotalMaxCombo = ppcMax.Score.Combo; MaxPP = ppcMax.PP; SameAccFCPP = ppcFc.PP; PP = ppc.PP; Stars = ppc.DifficultyAttributes.StarRating; AR = ppc.DifficultyAttributes.ApproachRate; OD = ppc.DifficultyAttributes.OverallDifficulty; SR = ppc.DifficultyAttributes.StarRating; Beatmap = map; HitCount = map.WorkingBeatmap.Beatmap.HitObjects.Count; Great = ppc.Score.Statistics.Great; Good = ppc.Score.Statistics.Ok; Meh = ppc.Score.Statistics.Meh; Miss = ppc.Score.Statistics.Miss; }