示例#1
0
        private OsuJsonUserBest[] ProcessJson(OsuJsonUserBest[] array)
        {
            var oldarray = array;

            if (Recent)
            {
                array = array.OrderByDescending(x => x.date).Take(5).ToArray();
            }

            foreach (var item in array)
            {
                item.play_number = (Array.IndexOf(oldarray, item) + 1);

                OsuUtil.GetCalculatedAccuracy(item, Mode);
                //Get Beatmap last update
                item.Beatmap = GetBeatmap(item.beatmap_id);

                if (item.enabled_mods > 0)
                {
                    //Star rating
                    var data = OsuDlBeatmap.FindMap(item.beatmap_id, item.Beatmap.last_update.DateTime);
                    var diff = new DiffCalc().Calc(Beatmap.Read(new StreamReader(new MemoryStream(data, false))), (Mods)item.enabled_mods);
                    item.starrating = diff.Total;
                }
            }
            return(array);
        }
示例#2
0
        private OsuJsonUserRecent[] ProcessJson(OsuJsonUserRecent[] array, bool retrycount)
        {
            foreach (var item in array)
            {
                if (retrycount)
                {
                    continue;
                }

                //Get Beatmap last update
                var beatmapBuilder = new OsuBeatmapBuilder
                {
                    Mode = Mode,
                    ConvertedIncluded = "1",
                    BeatmapId         = item.beatmap_id
                };

                item.Beatmap = beatmapBuilder.Execute().First();

                OsuUtil.GetCalculatedAccuracy(item, Mode);
                var data        = OsuDlBeatmap.FindMap(item.beatmap_id, item.Beatmap.last_update.DateTime);
                var beatmapData = Beatmap.Read(new StreamReader(new MemoryStream(data, false)));
                var diff        = new DiffCalc().Calc(beatmapData, (Mods)item.enabled_mods);

                var rawPp = new PPv2(new PPv2Parameters(beatmapData, diff, new Accuracy(item.count300, item.count100, item.count50, item.countmiss).Value(), item.countmiss, item.maxcombo, (Mods)item.enabled_mods));
                item.nochokeaccuracy = new Accuracy(item.count300 + item.countmiss, item.count100, item.count50, 0).Value() * 100;
                var nochokePp = new PPv2(new PPv2Parameters(beatmapData, diff, item.nochokeaccuracy / 100, 0, diff.Beatmap.GetMaxCombo(), (Mods)item.enabled_mods));
                item.pp        = rawPp.Total;
                item.nochokepp = nochokePp.Total;

                item.rounded_score = item.score.ToString("C0", _nfi);

                if (item.maxcombo <= (beatmapData.GetMaxCombo() - (item.count100 + item.count50)) || item.rank == "XH" || item.rank == "SH")
                {
                    item.choked = true;
                }
                else if (item.countmiss > 0)
                {
                    item.choked = true;
                }

                item.starrating = diff.Total;

                item.counttotal = beatmapData.CountCircles + beatmapData.CountSliders + beatmapData.CountSpinners;

                item.rounded_score = item.score.ToString("C0", _nfi);

                item.standardhit = item.count300 + item.count100 + item.count50 + item.countmiss;

                item.hitted = item.countkatu + item.countgeki + item.count300 + item.count100 + item.count50 + item.countmiss;

                item.completion = item.standardhit / (double)item.counttotal * 100;
            }

            return(array);
        }
示例#3
0
        private List <OsuJsonUserBest> ProcessSingle(OsuJsonUserBest[] array)
        {
            List <OsuJsonUserBest> list = new List <OsuJsonUserBest>
            {
                array[(int)PlayNumber - 1]
            };

            if (list[0].enabled_mods > 0)
            {
                var data = OsuDlBeatmap.FindMap(list[0].beatmap_id, list[0].Beatmap.last_update.DateTime);
                var diff = new DiffCalc().Calc(Beatmap.Read(new StreamReader(new MemoryStream(data, false))), (Mods)list[0].enabled_mods);
                list[0].starrating = diff.Total;
            }

            list[0].Beatmap = GetBeatmap(list[0].beatmap_id);
            return(list);
        }