Exemplo n.º 1
0
        private decimal TestPayout(string strwheel, decimal betperline, Func <int, int, int[], Wheel> wheelEncoding)
        {
            var sdt = DateTime.Now;

            var serviceProvider = new ServiceCollection()
                                  .AddLogging()
                                  .BuildServiceProvider();
            var logFactory = serviceProvider.GetService <ILoggerFactory>();
            var logger     = logFactory.CreateLogger <DinoAgeModule>();

            var DinoAgeModule = new DinoAgeModule(logger);

            var        totalWin         = 0m;
            List <int> maxIndexPosition = new List <int>();
            RequestContext <SpinArgs> requestContext = new RequestContext <SpinArgs>("", DinoAgeConfiguration.GameName, PlatformType.Web);
            var summData = new SummaryData();

            Assert.That(strwheel, Is.Not.Null.Or.Empty);

            string[] arrstr = strwheel.Split(',');
            int[]    arr    = Array.ConvertAll(arrstr, int.Parse);

            UserGameKey ugk = new UserGameKey()
            {
                UserId = -1,
                GameId = DinoAgeConfiguration.GameId,
                Level  = 1
            };

            SpinBet sb = new SpinBet(ugk, PlatformType.None)
            {
                LineBet    = 1,
                Credits    = 0,
                Lines      = DinoAgeConfiguration.Lines,
                Multiplier = 1
            };

            requestContext.Currency = new Currency()
            {
                Id = sb.CurrencyId
            };
            requestContext.Parameters = new SpinArgs()
            {
                LineBet = sb.LineBet, BettingLines = sb.Lines
            };
            requestContext.GameSetting = new GameSetting()
            {
                GameSettingGroupId = sb.GameSettingGroupId
            };

            DinoAgeSpinResult sr = new DinoAgeSpinResult(ugk)
            {
                SpinBet = new SpinBet(ugk, PlatformType.None)
                {
                    Lines      = DinoAgeConfiguration.Lines,
                    Multiplier = 1,
                    LineBet    = betperline
                },

                Wheel = wheelEncoding(DinoAgeConfiguration.Width, DinoAgeConfiguration.Height, arr)
            };


            totalWin = DinoAgeCommon.CalculateWin(sr, 1);

            Console.WriteLine($"Win            : {totalWin}");
            return(totalWin);
        }
Exemplo n.º 2
0
        public void TestDinoAge(int gameId, int level, string currencyCode, int numusers, int numItrPerUser, decimal bet, int lines, int mp)
        {
            var sdt = DateTime.Now;

            var serviceProvider = new ServiceCollection()
                                  .AddLogging()
                                  .BuildServiceProvider();
            var logFactory = serviceProvider.GetService <ILoggerFactory>();
            var logger     = logFactory.CreateLogger <DinoAgeModule>();

            var DinoAgeModule = new DinoAgeModule(logger);
            var maxWin        = 0m;
            var summData      = new SummaryData();
            var users         = GenerateUsers(gameId, numusers, level);
            var sbs           = GenerateUserBets(users, bet, lines, mp);

            RequestContext <SpinArgs> requestContext = new RequestContext <SpinArgs>("", DinoAgeConfiguration.GameName, PlatformType.Web);

            RequestContext <BonusArgs> requestBonusContext = new RequestContext <BonusArgs>("", DinoAgeConfiguration.GameName, PlatformType.Web);

            Parallel.ForEach(users,
                             () => new SummaryData(),
                             (key, state, sdata) =>
            {
                var sb = sbs[key.UserId];
                requestContext.Currency = new Currency()
                {
                    Id = sb.CurrencyId
                };
                requestContext.Parameters = new SpinArgs()
                {
                    LineBet = sb.LineBet, BettingLines = sb.Lines
                };
                requestContext.GameSetting = new GameSetting()
                {
                    GameSettingGroupId = sb.GameSettingGroupId
                };

                for (var i = 0; i < numItrPerUser; ++i)
                {
                    var sr = DinoAgeModule.ExecuteSpin(level, new UserGameSpinData(), requestContext).Value as DinoAgeSpinResult;

                    if (sr.Win > maxWin)
                    {
                        maxWin = sr.Win;
                    }

                    UpdateSummaryData(sdata, sr);
                    UpdateDinoAgeSummaryData(sdata, sr);
                }

                return(sdata);
            },
                             sdata =>
            {
                lock (summData)
                {
                    summData.Sum(sdata);
                }
            });

            DisplayDinoAgeSummaryData(level, bet, lines, summData, sdt, maxWin, null);
        }