Пример #1
0
        private void load(OsuColour colours, BeatmapDifficultyCache difficultyCache)
        {
            Colour = colours.BlueLighter;

            if (gameplayState != null)
            {
                performanceCalculator = gameplayState.Ruleset.CreatePerformanceCalculator();
                clonedMods            = gameplayState.Mods.Select(m => m.DeepClone()).ToArray();

                scoreInfo = new ScoreInfo(gameplayState.Score.ScoreInfo.BeatmapInfo, gameplayState.Score.ScoreInfo.Ruleset)
                {
                    Mods = clonedMods
                };

                var gameplayWorkingBeatmap = new GameplayWorkingBeatmap(gameplayState.Beatmap);
                difficultyCache.GetTimedDifficultyAttributesAsync(gameplayWorkingBeatmap, gameplayState.Ruleset, clonedMods, loadCancellationSource.Token)
                .ContinueWith(task => Schedule(() =>
                {
                    timedAttributes = task.GetResultSafely();

                    IsValid = true;

                    if (lastJudgement != null)
                    {
                        onJudgementChanged(lastJudgement);
                    }
                }), TaskContinuationOptions.OnlyOnRanToCompletion);
            }
        }
Пример #2
0
        public ActionResult PerformanceTest()
        {
            var performanceCalculator = new PerformanceCalculator();

            var recordsCount  = 1000;
            var databaseTypes = new[]
            {
                DatabaseType.Memory,
                DatabaseType.Xml,
                DatabaseType.LinqToXml,
                DatabaseType.ADO,
                DatabaseType.LinqToSql,
                DatabaseType.EntityFramework,
                DatabaseType.BLToolkit,
                DatabaseType.NHibernate
            };

            var performanceResult = performanceCalculator.CalculatePerformance(recordsCount, databaseTypes);

            var performanceResultViewModel = new PerformanceResultViewModel
            {
                RecordsCount        = recordsCount,
                RepositoriesResults = performanceResult
            };

            return(View(performanceResultViewModel));
        }
Пример #3
0
 // Use this for initialization
 void Start()
 {
     controller = GetComponent <MovementController>();
     lastTarget = target;
     //self = transform;
     server.clients.Add(this);
     grid = server.grid;
     recentlyPerformance = GetComponent <PerformanceCalculator>();
     recentlyPerformance.AddPositions(transform.position);
     controller.setMovementSpeed(recentlyPerformance.getSpeed());
 }
        public void CalculateTest()
        {
            var calculator = new PerformanceCalculator();

            var quotes = MockQuotes("AAPL");

            var result = calculator.Calculate(quotes);

            var expected = new List <decimal> {
                0, 10, 20, 40, 30, 15, 0
            };

            Assert.Equal(expected, result.Items.Select(x => x.Value).ToList());
        }
Пример #5
0
        public static float GetPP(Stream beatmapStream, PlayResult result, bool ifSs)
        {
            Ruleset ruleset = result.Mode switch
            {
                0 => new OsuRuleset(),
                1 => new TaikoRuleset(),
                2 => new CatchRuleset(),
                3 => new ManiaRuleset(),
                _ => throw new Exception("Invalid mode"),
            };
            BeatmapInfo beatmapInfo = new BeatmapInfo()
            {
                BaseDifficulty = new BeatmapDifficulty()
                {
                    DrainRate         = result.BeatmapData.DrainRate,
                    ApproachRate      = result.BeatmapData.ApproachRate,
                    CircleSize        = result.BeatmapData.CircleSize,
                    OverallDifficulty = result.BeatmapData.OverallDifficulty,
                },
                Ruleset = ruleset.RulesetInfo,
            };
            FakeWorkingBeatmap beatmap = new FakeWorkingBeatmap(beatmapStream, beatmapInfo);
            ScoreInfo          score   = new ScoreInfo()
            {
                MaxCombo   = (int)result.Combo,
                Mods       = ruleset.GetAllMods().Where(mod => result.Mods.GetFromBitflag().Select(m => m.ToShortString()).Contains(mod.Acronym)).ToArray(),
                Accuracy   = (float)result.Accuracy.Accuracy,
                Statistics = result.Accuracy.Statistics,
            };

            if (ifSs)
            {
                score.Statistics = new Dictionary <HitResult, int>()
                {
                    { HitResult.Miss, 0 },
                    { HitResult.Ok, 0 },
                    { HitResult.Meh, 0 },
                    { HitResult.Good, 0 },
                    { HitResult.Perfect, 0 },
                    { HitResult.Great, result.Accuracy.Statistics.Sum(k => k.Value) }
                };
            }
            PerformanceCalculator calc = ruleset.CreatePerformanceCalculator(beatmap, score);

            return((float)calc.Calculate());
        }
Пример #6
0
        public DiscordEmbedBuilder CreateListEmbed()
        {
            this.user = OsuApi.User(input).Result;

            DiscordEmbedBuilder embed = CreateBaseEmbed();

            for (int i = input.Page * 5 - 5; i < input.Page * 5; i++)
            {
                if (i < scoreList.Length)
                {
                    ScoreData score = scoreList[i];

                    int         modRequestNumber = OsuHelper.GetModRequestNumber(score.EnabledMods);
                    BeatmapData beatmap          = OsuApi.Beatmap(score.BeatmapId, modRequestNumber, input.Gamemode).Result[0];

                    ppData pp = new PerformanceCalculator(score, beatmap, input.Gamemode).Calculate();
                    string achievedPp;

                    if (score.Rank.Equals("F") || beatmap.Approved == 4)
                    {
                        achievedPp = $"~~{Math.Round(score.PP > 0 && !input.IsDeltaT ? score.PP : pp.AchievedPp)}pp~~";
                    }
                    else
                    {
                        achievedPp = Math.Round(score.PP > 0 && !input.IsDeltaT ? score.PP : pp.AchievedPp).ToString() + "pp";
                    }

                    Dictionary <string, string> data = GetModeData(score, beatmap);

                    embed.AddField($"**{beatmap.Artist} - {beatmap.Title} [{beatmap.Version}]**",
                                   $"{GetRankEmoji(score)}{OsuHelper.ParseMods(score.EnabledMods)} {data["accuracy"]} {achievedPp}\n" +
                                   $"{data["combo"]} ({data["hits"]})");
                }
                else
                {
                    break;
                }
            }

            return(embed);
        }
Пример #7
0
 // Use this for initialization
 void Start()
 {
     controller = GetComponent<MovementController>();
     lastTarget = target;
     //self = transform;
     server.clients.Add(this);
     grid = server.grid;
     recentlyPerformance = GetComponent<PerformanceCalculator>();
     recentlyPerformance.AddPositions(transform.position);
     controller.setMovementSpeed(recentlyPerformance.getSpeed());
 }
Пример #8
0
        public async Task <DiscordEmbedBuilder> CreateScoreEmbed()
        {
            int requestnumber = OsuHelper.GetModRequestNumber(score.EnabledMods);

            Task <UserData>      userRequest        = OsuApi.User(input);
            Task <BeatmapData[]> beatmapRequest     = OsuApi.Beatmap(score.BeatmapId ?? input.BeatmapId, requestnumber, input.Gamemode);
            Task <ScoreData[]>   leaderboardRequest = OsuApi.Leaderboard(score.BeatmapId, input.Gamemode);

            Task.WhenAll(
                userRequest,
                beatmapRequest,
                leaderboardRequest
                ).Wait();

            user        = userRequest.Result;
            beatmap     = beatmapRequest.Result[0];
            leaderboard = leaderboardRequest.Result;

            DiscordEmbedBuilder         embed = CreateBaseEmbed();
            Dictionary <string, string> data  = GetModeData(score, beatmap);
            string emoji = GetRankEmoji(score);
            string mods  = OsuHelper.ParseMods(score.EnabledMods);

            ppData pp = new PerformanceCalculator(score, beatmap, input.Gamemode).Calculate();
            string achievedPp;

            if (score.Rank.Equals("F") || beatmap.Approved == 4)
            {
                achievedPp = $"~~{Math.Round(score.PP > 0 && !input.IsDeltaT ? score.PP : pp.AchievedPp)}pp~~";
            }
            else
            {
                achievedPp = Math.Round(score.PP > 0 && !input.IsDeltaT ? score.PP : pp.AchievedPp).ToString() + "pp";
            }

            var    totalTimeSpan = TimeSpan.FromSeconds(beatmap.TotalLength);
            var    hitTimeSpan   = TimeSpan.FromSeconds(beatmap.HitLength);
            string totalLength   = string.Format("{0:D2}:{1:D2}", totalTimeSpan.Minutes, totalTimeSpan.Seconds);
            string hitLength     = string.Format("{0:D2}:{1:D2}", hitTimeSpan.Minutes, hitTimeSpan.Seconds);

            int retryCount = GetRetryCount();

            if (retryCount > 0)
            {
                embed.Author.Name += $" | Try #{retryCount}";
            }

            embed.WithDescription($"[{beatmap.Artist} - {beatmap.Title} [{beatmap.Version}]](https://osu.ppy.sh/b/{beatmap.BeatmapId})\n" +
                                  $"{mods} **{achievedPp}**");

            int leaderboardPosition = GetLeaderboardPosition();

            if (leaderboardPosition > 0)
            {
                embed.Description += $" BM#{leaderboardPosition}";
            }

            embed.AddField("**Score**",
                           $"{emoji} {score.Score.ToString("#,##0")}",
                           true);

            embed.AddField("**Combo**",
                           data["combo"],
                           true);

            embed.AddField("**Accuracy**",
                           data["accuracy"],
                           true);

            embed.AddField("**Hits**",
                           data["hits"],
                           true);

            if (pp.FullComboPp != 0)
            {
                embed.AddField("**PP if FC**",
                               Math.Round(pp.FullComboPp) + "pp",
                               true);
            }

            if (pp.ssPp != 0)
            {
                embed.AddField("**PP if SS**",
                               Math.Round(pp.ssPp) + "pp",
                               true);
            }

            embed.AddField("**Beatmap Values**",
                           $"★{Math.Round(beatmap.DifficultyRating, 2)} **Length**: {totalLength} ({hitLength}) **BPM** {beatmap.bpm}\n" +
                           data["stats"]);

            embed.WithFooter($"Beatmap by: {beatmap.Creator} | Played on {score.Date}");

            Database.SetLastMap(input.DiscordChannelId, beatmap.BeatmapId);
            return(embed);
        }
Пример #9
0
        /* public static Presenters Presenters
         * {
         *   get { return presenters; }
         * }*/

        static Program()
        {
            var exePath = Path.GetDirectoryName(Application.ExecutablePath);
            var path    = Path.Combine(exePath, "AppSettings.json");
            var json    = File.ReadAllText(path);

            GlobalObjects.Config = JsonConvert.DeserializeObject <JObject>(json);

            AuditContext auditContext = null;

            try
            {
                auditContext = new AuditContext((string)GlobalObjects.Config["ConnectionStrings"]["Audit"]);
            }
            catch {}
            GlobalObjects.AuditRepository = new AuditRepository(auditContext);
            GlobalObjects.AuditContext    = auditContext;

            var environment = DbTypes.CasEnvironment = new CasEnvironment();

            environment.AuditRepository = GlobalObjects.AuditRepository;
            environment.ApiProvider     = new ApiProvider((string)GlobalObjects.Config["ConnectionStrings"]["ScatTest"]);

            var nonRoutineJobDataAccess      = new NonRoutineJobDataAccess(environment.Loader, environment.Keeper);
            var itemsRelationsDataAccess     = new ItemsRelationsDataAccess(environment);
            var filesDataAccess              = new FilesDataAccess(environment.NewLoader);
            var workPackageRecordsDataAccess = new WorkPackageRecordsDataAccess(environment);


            var storeService              = new StoreCore(environment);
            var aircraftService           = new AircraftsCore(environment.Loader, environment.NewKeeper, environment.NewLoader);
            var compontntService          = new ComponentCore(environment, environment.Loader, environment.NewLoader, environment.NewKeeper, aircraftService, itemsRelationsDataAccess);
            var averageUtilizationService = new AverageUtilizationCore(aircraftService, storeService, compontntService);
            var directiveService          = new DirectiveCore(environment.NewKeeper, environment.NewLoader, environment.Keeper, environment.Loader, itemsRelationsDataAccess);
            var aircraftFlightService     = new AircraftFlightCore(environment, environment.Loader, environment.NewLoader, directiveService, environment.Manipulator, compontntService, environment.NewKeeper, aircraftService);
            var flightTrackService        = new FlightTrackCore(environment.NewLoader, environment.Loader, environment);
            var calculator                 = new Calculator(environment, compontntService, aircraftFlightService, aircraftService);
            var mtopCalculator             = new MTOPCalculator(calculator, aircraftService, averageUtilizationService);
            var planOpsCalculator          = new PlanOpsCalculator(environment.NewLoader, environment.NewKeeper, aircraftService, flightTrackService);
            var performanceCalculator      = new PerformanceCalculator(calculator, averageUtilizationService, mtopCalculator);
            var packageService             = new PackagesCore(environment, environment.NewKeeper, environment.Loader, aircraftService, compontntService);
            var purchaseService            = new PurchaseCore(environment, environment.NewLoader, environment.Loader, packageService, environment.NewKeeper, performanceCalculator);
            var calcStockService           = new StockCalculator(environment, environment.NewLoader, compontntService);
            var documentService            = new DocumentCore(environment, environment.NewLoader, environment.Loader, aircraftService, environment.NewKeeper, compontntService);
            var maintenanceService         = new MaintenanceCore(environment, environment.NewLoader, environment.NewKeeper, itemsRelationsDataAccess, aircraftService);
            var maintenanceCheckCalculator = new MaintenanceCheckCalculator(calculator, averageUtilizationService, performanceCalculator);
            var analystService             = new AnalystCore(compontntService, maintenanceService, directiveService, maintenanceCheckCalculator, performanceCalculator);
            var discrepanciesService       = new DiscrepanciesCore(environment.Loader, environment.NewLoader, directiveService, aircraftFlightService);
            var kitsService                = new KitsCore(environment, environment.Loader, environment.NewKeeper, compontntService, nonRoutineJobDataAccess);
            var smsService                 = new SMSCore(environment.Manipulator);
            var personelService            = new PersonnelCore(environment);
            var transferRecordCore         = new TransferRecordCore(environment.NewLoader, environment.NewKeeper, compontntService, aircraftService, calculator, storeService, filesDataAccess);
            var bindedItemsService         = new BindedItemsCore(compontntService, directiveService, maintenanceService);
            var performanceService         = new PerformanceCore(environment.NewKeeper, environment.Keeper, calculator, bindedItemsService);
            var workPackageService         = new WorkPackageCore(environment, environment.NewLoader, maintenanceService, environment.NewKeeper, calculator, compontntService, aircraftService, nonRoutineJobDataAccess, directiveService, filesDataAccess, performanceCalculator, performanceService, bindedItemsService, workPackageRecordsDataAccess, mtopCalculator, averageUtilizationService);
            var nonRoutineJobService       = new NonRoutineJobCore(environment, workPackageService, nonRoutineJobDataAccess, environment.NewLoader);
            var auditService               = new AuditCore(environment, environment.Loader, environment.NewLoader, environment.NewKeeper, calculator, performanceCalculator, performanceService);

            DbTypes.AircraftsCore = aircraftService;

            GlobalObjects.CasEnvironment             = environment;
            GlobalObjects.PackageCore                = packageService;
            GlobalObjects.PurchaseCore               = purchaseService;
            GlobalObjects.ComponentCore              = compontntService;
            GlobalObjects.AnalystCore                = analystService;
            GlobalObjects.StockCalculator            = calcStockService;
            GlobalObjects.DocumentCore               = documentService;
            GlobalObjects.AuditCore                  = auditService;
            GlobalObjects.MaintenanceCore            = maintenanceService;
            GlobalObjects.WorkPackageCore            = workPackageService;
            GlobalObjects.NonRoutineJobCore          = nonRoutineJobService;
            GlobalObjects.DirectiveCore              = directiveService;
            GlobalObjects.AircraftFlightsCore        = aircraftFlightService;
            GlobalObjects.DiscrepanciesCore          = discrepanciesService;
            GlobalObjects.KitsCore                   = kitsService;
            GlobalObjects.SmsCore                    = smsService;
            GlobalObjects.PersonnelCore              = personelService;
            GlobalObjects.TransferRecordCore         = transferRecordCore;
            GlobalObjects.AircraftsCore              = aircraftService;
            GlobalObjects.ItemsRelationsDataAccess   = itemsRelationsDataAccess;
            GlobalObjects.StoreCore                  = storeService;
            GlobalObjects.BindedItemsCore            = bindedItemsService;
            GlobalObjects.AverageUtilizationCore     = averageUtilizationService;
            GlobalObjects.MaintenanceCheckCalculator = maintenanceCheckCalculator;
            GlobalObjects.MTOPCalculator             = mtopCalculator;
            GlobalObjects.PerformanceCalculator      = performanceCalculator;
            GlobalObjects.PlanOpsCalculator          = planOpsCalculator;
            GlobalObjects.PerformanceCore            = performanceService;
            GlobalObjects.FlightTrackCore            = flightTrackService;

            environment.SetAircraftCore(aircraftService);
            environment.Calculator = calculator;
            environment.Manipulator.PurchaseService    = GlobalObjects.PurchaseCore;
            environment.Manipulator.MaintenanceCore    = GlobalObjects.MaintenanceCore;
            environment.Manipulator.WorkPackageCore    = GlobalObjects.WorkPackageCore;
            environment.Manipulator.AircraftFlightCore = GlobalObjects.AircraftFlightsCore;
            environment.Manipulator.ComponentCore      = GlobalObjects.ComponentCore;
            environment.Manipulator.AircraftsCore      = GlobalObjects.AircraftsCore;
            environment.Manipulator.BindedItemCore     = GlobalObjects.BindedItemsCore;

            InitLoadingVariants();
            InitializePresenters();
        }