示例#1
0
        public static FreeSpinCollapsingResult GenerateWithBonusFreeSpinCollapsingResult(int level)
        {
            var generateCount = 0;
            var config        = new Configuration();

            var spinResult  = GenerateWinningSpinResult(level);
            var targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
            var freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(
                spinResult,
                targetWheel,
                config.Payline,
                config.FreeGamePayTable,
                config.FreeGameScatterSymbols);

            while (!freeSpinCollapsingResult.HasFeatureBonus)
            {
                spinResult  = GenerateWinningSpinResult(level);
                targetWheel = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
                freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(
                    spinResult,
                    targetWheel,
                    config.Payline,
                    config.FreeGamePayTable,
                    config.FreeGameScatterSymbols);
                generateCount++;
                Debug.WriteLine($"CollapsingSpinResult Generate Count: {generateCount}");
            }

            return(freeSpinCollapsingResult);
        }
示例#2
0
        public decimal EngineShouldCreateCorrectPayout(string revealItemString, int revealItem, int level)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                },
            });

            var spinResult  = GenerateWithBonusSpinResult(level);
            var revealItems = Array.ConvertAll(revealItemString.Split(','), Convert.ToInt32);
            var revealBonus = RevealBonusEngine.CreateRevealBonus(spinResult);

            revealBonus.UpdateBonus(revealItems, revealItem);

            var revealBonusResult = RevealBonusEngine.CreateRevealBonusResult(revealBonus);

            return(revealBonusResult.Win);
        }
示例#3
0
        public void EngineShouldRemoveCorrectWinPositions(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                config.BonusConfig.Collapse.Multipliers.First());
            var bonusPositions      = MainGameEngine.GenerateBonusPositions(wheel);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions);

            foreach (var winPositionIndex in winPositions.Select((Value, Index) => new { Value, Index }))
            {
                var removedWinPosition = removedWinPositions.ElementAt(winPositionIndex.Index);

                Assert.AreEqual(winPositionIndex.Value.Line, removedWinPosition.Line);
            }

            foreach (var bonusPositionIndex in bonusPositions.Select((Value, Index) => new { Value, Index }))
            {
                Assert.AreEqual(bonusPositionIndex.Value.Line, 0);
            }
        }
示例#4
0
        public decimal SpinResultShouldCreateCorrectPayout(string wheelString, int level, decimal bet)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = bet,
                    Multiplier = 1
                }
            });

            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions   = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, spinBet.LineBet, spinBet.Lines, spinBet.Multiplier);
            var stackedReels   = MainGameEngine.GetStackedReels(wheel, config.PayTable);
            var bonusPositions = MainGameEngine.GenerateBonusPositions(stackedReels);
            var spinResult     = new SpinResult(spinBet, wheel, winPositions, bonusPositions);

            return(spinResult.Win);
        }
        public string EngineShouldCreateCorrectRowPositions(string wheelString, int replacementSymbol, int level)
        {
            var config = new Configuration();
            var wheel  = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());

            if (wheel.CountDistinct(Symbols.Mystery) > 0) /// Calculate wins with replaced mystery symbols
            {
                var replacedMysterySymbolWheel = MainGameEngine.GenerateReplacedMysterySymbolWheel(config, wheel, replacementSymbol);
                var winPositions = MainGameEngine.GenerateWinPositions(
                    config.Payline,
                    config.PayTable,
                    replacedMysterySymbolWheel,
                    1,
                    Game.Lines,
                    1);

                return(string.Join('|', winPositions.Select(wp => string.Join(',', wp.RowPositions))));
            }
            else
            {
                var winPositions = MainGameEngine.GenerateWinPositions(
                    config.Payline,
                    config.PayTable,
                    wheel,
                    1,
                    Game.Lines,
                    1);

                return(string.Join('|', winPositions.Select(wp => string.Join(',', wp.RowPositions))));
            }
        }
示例#6
0
        public void EngineShouldGetRemoveCorrectRowPositions(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                config.BonusConfig.Collapse.Multipliers.First());
            var bonusPositions      = MainGameEngine.GenerateBonusPositions(wheel);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions, bonusPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(winPositions, widthIndex);

                var removeWinPositions = winPositions
                                         .Select(wp => wp.RowPositions[widthIndex] - 1)
                                         .Where(wp => wp != -1)
                                         .Distinct();

                var targetRowPositions = removeWinPositions;

                Assert.IsTrue(!targetRowPositions.Except(removeRowPositions).Any());
            }
        }
        public bool EngineShouldCreateCorrectMainGameRandomWheel(int level)
        {
            var areReelsCorrect = true;

            var config      = new Configuration();
            var targetWheel = MainGameEngine.GetTargetWheel(level, config);
            var topIndices  = MainGameEngine.GenerateRandomWheelIndices(targetWheel);
            var wheel       = MainGameEngine.GenerateNormalWheel(level, targetWheel, topIndices);

            for (var widthIndex = 0; widthIndex < Game.WheelWidth; widthIndex++)
            {
                for (var heightIndex = 0; heightIndex < Game.WheelHeight; heightIndex++)
                {
                    var index  = (Game.WheelHeight * widthIndex) + heightIndex;
                    var symbol = wheel[widthIndex][heightIndex];

                    if (!targetWheel[index][0].Contains(symbol))
                    {
                        areReelsCorrect = false;
                    }
                }
            }

            return(areReelsCorrect);
        }
示例#8
0
        public string EngineShouldCreateCorrectCollapseReels(string wheelString, string indicesString, int level)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            });

            var targetWheel    = config.WeightedReelStripsCollection.FirstOrDefault().Wheel;
            var topIndices     = Array.ConvertAll(indicesString.Split(','), Convert.ToInt32).ToList();
            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions   = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, spinBet.LineBet, spinBet.Lines, config.BonusConfig.FreeSpin.Multipliers.First());
            var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel);

            var freeSpinResult           = new FreeSpinResult(spinBet, wheel, topIndices, winPositions, bonusPositions, config.BonusConfig.FreeSpin.Multipliers.First());
            var freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(freeSpinResult, targetWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable);

            return(string.Join('|', freeSpinCollapsingResult.Wheel.Reels.Select(symbols => string.Join(',', symbols))));
        }
示例#9
0
        public bool SpinResultShouldFlagSpinResultWithFeatureOnScatter(string wheelString, int level, decimal bet)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = bet,
                    Multiplier = 1
                }
            });

            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.MainGamePayTable,
                wheel,
                spinBet.LineBet,
                spinBet.Lines,
                1);
            var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel);

            var spinResult = new SpinResult(spinBet, wheel, null, winPositions, bonusPositions);

            return(spinResult.HasFeatureBonus);
        }
        public void EngineShouldGetRemoveCorrectRowPositions(string wheelString, int level)
        {
            var config              = new Configuration();
            var wheel               = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions        = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                for (var heightIndex = 0; heightIndex < Game.WheelHeight; heightIndex++)
                {
                    var index = (widthIndex * Game.WheelHeight) + heightIndex;
                    var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(winPositions, index);

                    var removeWinPositions = winPositions
                                             .Select(wp => wp.RowPositions[index] > 0 ? index % Game.WheelWidth : -1)
                                             .Where(wp => wp != -1)
                                             .Distinct();

                    var targetRowPositions = removeWinPositions;

                    Assert.IsTrue(!targetRowPositions.Except(removeRowPositions).Any());
                }
            }
        }
        public void EngineShouldCreateCorrectSpinBet()
        {
            var config         = new Configuration();
            var requestContext = new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            };

            var spinBet = MainGameEngine.GenerateSpinBet(requestContext);

            var isCurrencyEqual         = spinBet.CurrencyId == requestContext.Currency.Id;
            var isGameSettingGroupEqual = spinBet.GameSettingGroupId == requestContext.GameSetting.GameSettingGroupId;
            var isLineBetEqual          = spinBet.LineBet == requestContext.Parameters.LineBet;
            var isCreditsEqual          = spinBet.Credits == Game.Credits;
            var isAutoSpinEqual         = spinBet.IsAutoSpin == requestContext.Parameters.IsAutoSpin;
            var isLinesEqual            = spinBet.Lines == Game.Lines;
            var isMultiplierEqual       = spinBet.Multiplier == requestContext.Parameters.Multiplier;
            var isFunPlayDisabled       = spinBet.FunPlayDemoKey == 0;

            Assert.IsTrue(isCurrencyEqual && isGameSettingGroupEqual && isLineBetEqual && isCreditsEqual && isAutoSpinEqual && isLinesEqual && isMultiplierEqual && isFunPlayDisabled);
        }
        public void EngineShouldGenerateCorrectCollapseWheel(int level)
        {
            var config              = new Configuration();
            var spinResult          = GenerateWinningSpinResult(level);
            var referenceWheel      = MainGameEngine.GetTargetWheel(level, config);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(spinResult.WinPositions);
            var collapsingRemoves   = CollapsingBonusEngine.GetCollapseRemoveItems(removedWinPositions);
            var newTopIndices       = CollapsingBonusEngine.GetCollapseTopIndices(referenceWheel, spinResult.TopIndices, collapsingRemoves);
            var collapsingAdds      = CollapsingBonusEngine.GetCollapseAddItems(referenceWheel, newTopIndices, collapsingRemoves);
            var collapsingWheel     = CollapsingBonusEngine.GenerateCollapsedWheel(spinResult.Wheel, collapsingRemoves, collapsingAdds);
            var newWheel            = spinResult.Wheel.Copy();

            foreach (var removeItem in collapsingRemoves)
            {
                var cleanReel = newWheel[removeItem.Key];

                foreach (var index in removeItem.Value.OrderByDescending(val => val))
                {
                    cleanReel.RemoveAt(index);
                }

                newWheel[removeItem.Key] = collapsingAdds[removeItem.Key].Concat(cleanReel).ToList();
            }

            foreach (var reelIndex in collapsingWheel.Reels.Select((Value, Index) => new { Value, Index }))
            {
                var referenceReel = newWheel[reelIndex.Index];

                Assert.IsTrue(!referenceReel.Except(reelIndex.Value).Any());
            }


            newWheel.Equals(collapsingWheel);
        }
        public void EngineShouldCreateCorrectWinPositionLineAndMultiplierAndSymbol(string wheelString, int replacementSymbol, int level)
        {
            var config = new Configuration();
            var wheel  = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());

            if (wheel.CountDistinct(Symbols.Mystery) > 0) /// Calculate wins with replaced mystery symbols
            {
                var replacedMysterySymbolWheel = MainGameEngine.GenerateReplacedMysterySymbolWheel(config, wheel, replacementSymbol);
                var winPositions = MainGameEngine.GenerateWinPositions(
                    config.Payline,
                    config.PayTable,
                    replacedMysterySymbolWheel,
                    1,
                    Game.Lines,
                    1);

                Assert.IsTrue(!winPositions.Any(wp => wp.Line < 0 || wp.Multiplier <= 0 || wp.Symbol < 0));
            }
            else
            {
                var winPositions = MainGameEngine.GenerateWinPositions(
                    config.Payline,
                    config.PayTable,
                    wheel,
                    1,
                    Game.Lines,
                    1);
                Assert.IsTrue(!winPositions.Any(wp => wp.Line < 0 || wp.Multiplier <= 0 || wp.Symbol < 0));
            }
        }
示例#14
0
        public bool SpinResultShouldHaveBombCollapseWhenReelsHaveBombAndWin(string wheelString, int level, decimal bet)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = bet,
                    Multiplier = 1
                }
            });

            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                spinBet.LineBet,
                spinBet.Lines,
                spinBet.Multiplier);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions);

            var spinResult = new Games.NuwaAndTheFiveElements.Models.GameResults.Spins.SpinResult(level, spinBet, wheel, null, winPositions, null, bombAndStopperPositions);

            return(spinResult.HasBomb && spinResult.Collapse);
        }
示例#15
0
        public string EngineShouldCreateCorrectCollapseReels(string wheelString, string indicesString, int level)
        {
            wheelString = string.Join(',', wheelString.Split('|'));
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            });

            var targetWheel             = MainGameEngine.GetTargetWheel(level, config);
            var topIndices              = Array.ConvertAll(indicesString.Split(','), Convert.ToInt32).ToList();
            var wheel                   = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions            = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, spinBet.LineBet, spinBet.Lines, 1);
            var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, winPositions.Select(wp => wp.Symbol).ToList(), wheel);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions);

            var spinResult           = new Games.NuwaAndTheFiveElements.Models.GameResults.Spins.SpinResult(level, spinBet, wheel, topIndices, winPositions, matchingSymbolPositions, bombAndStopperPositions);
            var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(spinResult, targetWheel, config.SymbolCollapsePairs, config.Payline, config.PayTable);

            return(string.Join('|', collapsingSpinResult.Wheel.Reels.Select(symbols => string.Join(',', symbols))));
        }
        public decimal EngineShouldCreateCorrectPayout(string wheelString, int level, int scatterMultiplier)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            });

            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                spinBet.LineBet,
                spinBet.Lines,
                spinBet.Multiplier);

            var spinResult      = new Games.NuwaAndTheFiveElements.Models.GameResults.Spins.SpinResult(level, spinBet, wheel, null, winPositions, null, null);
            var instantWinBonus = InstantWinBonusEngine.CreateInstantWinBonus(spinResult);

            instantWinBonus.UpdateBonus(scatterMultiplier);
            var instantWinBonusResult = InstantWinBonusEngine.CreateInstantWinBonusResult(instantWinBonus);

            return(instantWinBonusResult.Win);
        }
        public string EngineShouldCreateCorrectRespinWheel(string wheelString, string newWheelString, int level)
        {
            var config  = new Configuration();
            var spinBet = MainGameEngine.GenerateSpinBet(new RequestContext <SpinArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new SpinArgs
                {
                    LineBet    = 1,
                    Multiplier = 1
                }
            });

            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions   = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, spinBet.LineBet, spinBet.Lines, spinBet.Multiplier);
            var stackedReels   = MainGameEngine.GetStackedReels(wheel, config.PayTable);
            var bonusPositions = MainGameEngine.GenerateBonusPositions(stackedReels);
            var spinResult     = new SpinResult(spinBet, wheel, winPositions, bonusPositions);
            var newWheel       = new Wheel(Game.WheelWidth, Game.WheelHeight, newWheelString.ToFormattedWheelString());
            var generatedWheel = RespinBonusEngine.GenerateRespinWheel(spinResult, newWheel);

            return(string.Join(",", generatedWheel.Reels.SelectMany(symbol => symbol)));
        }
示例#18
0
        public static CollapsingSpinResult GenerateWithBonusCollapsingSpinResult(int level)
        {
            var generateCount        = 0;
            var config               = new Configuration();
            var spinResult           = GenerateWinningSpinResult(level);
            var targetWheel          = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
            var collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(
                spinResult,
                targetWheel,
                config.Payline,
                config.MainGamePayTable);

            while (!collapsingSpinResult.HasFeatureBonus)
            {
                spinResult           = GenerateWinningSpinResult(level);
                targetWheel          = MainGameEngine.GetTargetWheel(level, config, spinResult.Wheel.ReelStripsId);
                collapsingSpinResult = CollapsingBonusEngine.CreateCollapsingSpinResult(
                    spinResult,
                    targetWheel,
                    config.Payline,
                    config.MainGamePayTable);
                generateCount++;
                Debug.WriteLine($"CollapsingSpinResult Generate Count: {generateCount}");
            }

            return(collapsingSpinResult);
        }
示例#19
0
        public void EngineShouldGetRemoveCorrectRowPositions(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString);
            var winPositions = MainGameEngine.GenerateWinPositions(
                config.Payline,
                config.PayTable,
                wheel,
                1,
                Game.Lines,
                1);
            var matchingSymbolPositions = MainGameEngine.GenerateMatchingSymbolPositions(config.SymbolCollapsePairs, winPositions.Select(wp => wp.Symbol).ToList(), wheel);
            var bombAndStopperPositions = MainGameEngine.GenerateBombAndStopperPositions(wheel, winPositions);
            var removedWinPositions     = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);

            for (var widthIndex = 0; widthIndex < wheel.Width; widthIndex++)
            {
                var removeRowPositions = CollapsingBonusEngine.GetRemoveRowPositions(winPositions, matchingSymbolPositions, bombAndStopperPositions, widthIndex);

                var removeWinPositions = winPositions
                                         .Select(wp => wp.RowPositions[widthIndex] - 1)
                                         .Where(wp => wp != -1)
                                         .Distinct();
                var removeMatchingSymbolPositions = matchingSymbolPositions[widthIndex]
                                                    .Select(position => position - 1)
                                                    .Where(position => position != -1)
                                                    .Distinct();

                var targetRowPositions = removeWinPositions.Union(removeMatchingSymbolPositions);

                Assert.IsTrue(!targetRowPositions.Except(removeRowPositions).Any());
            }
        }
示例#20
0
        public void EngineShouldCreateFreeSpinBonusResultFromFreeSpinCollapsingResult(int level)
        {
            var config         = new Configuration();
            var requestContext = new RequestContext <BonusArgs>("", "", PlatformType.Web)
            {
                GameSetting = new Model.Entity.GameSetting {
                    GameSettingGroupId = 0
                },
                Currency = new Model.Entity.Currency {
                    Id = 0
                },
                Parameters = new BonusArgs(),
                Platform   = PlatformType.All
            };

            Assert.DoesNotThrow(() =>
            {
                var freeSpinResult           = FreeSpinBonusEngine.CreateFreeSpinResult(level, requestContext, config);
                var freeSpinBonus            = FreeSpinBonusEngine.CreateFreeSpinBonus(freeSpinResult);
                var targetWheel              = MainGameEngine.GetTargetWheel(level, config, freeSpinResult.Wheel.ReelStripsId);
                var freeSpinCollapsingResult = FreeSpinBonusEngine.CreateFreeSpinCollapsingResult(freeSpinResult, targetWheel, config.BonusConfig.FreeSpin.Multipliers, config.Payline, config.PayTable);

                var freeSpinBonusResult = FreeSpinBonusEngine.CreateFreeSpinBonusResult(freeSpinBonus, freeSpinCollapsingResult);
            });
        }
        public int EngineShouldCreateCorrectBonusPositionsCount(string wheelString)
        {
            var config         = new Configuration();
            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel);

            return(bonusPositions.Count);
        }
示例#22
0
    public static T New(MainGameEngine engine)
    {
        T actor = new T();

        actor.SetMainGameEngine(engine);
        engine.allActors.Add(actor);
        return(actor);
    }
        public void EngineShouldCreateCorrectWinPositionLineAndMultiplierAndSymbol(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);

            Assert.IsTrue(!winPositions.Any(wp => wp.Line < 0 || wp.Multiplier <= 0 || wp.Symbol < 0));
        }
        public string EngineShouldCreateCorrectRowPositions(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);

            return(string.Join('|', winPositions.Select(wp => string.Join(',', wp.RowPositions))));
        }
        public int EngineShouldGetCorrectStackedSymbols(string wheelString)
        {
            var config         = new Configuration();
            var wheel          = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var stackedSymbols = MainGameEngine.GetStackedSymbols(wheel);

            return(stackedSymbols.Count);
        }
        public int EngineShouldCreateCorrectWinPositionCount(string wheelString, int level)
        {
            var config       = new Configuration();
            var wheel        = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);

            return(winPositions.Count);
        }
示例#27
0
        static void Main(string[] args)
        {
            // TCP server port
            int port = 1111;

            if (args.Length > 0)
            {
                port = int.Parse(args[0]);
            }

            Console.WriteLine($"TCP server port: {port}");

            Console.WriteLine();

            // Create a new TCP chat server
            MainGameEngine engine = new MainGameEngine();

            engine.server = new ChatServer(IPAddress.Any, port, engine);
            var server = engine.server;

            // Start the server
            Console.Write("Server starting...");
            server.Start();
            Console.WriteLine("Done!");

            Console.WriteLine("Press Enter to stop the server or '!' to restart the server...");

            //Game Engine Start!
            engine.Start();

            // Perform text input
            for (;;)
            {
                string line = Console.ReadLine();
                if (string.IsNullOrEmpty(line))
                {
                    break;
                }

                // Restart the server
                if (line == "!")
                {
                    Console.Write("Server restarting...");
                    server.Restart();
                    Console.WriteLine("Done!");
                    continue;
                }

                // Multicast admin message to all sessions
                line = "(admin) " + line;
                server.Multicast(line);
            }

            // Stop the server
            Console.Write("Server stopping...");
            server.Stop();
            Console.WriteLine("Done!");
        }
        public void EngineShouldRemoveCorrectWinPositionCount(string wheelString, int level)
        {
            var config              = new Configuration();
            var wheel               = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString());
            var winPositions        = MainGameEngine.GenerateWinPositions(config.Payline, config.PayTable, wheel, 1, 1);
            var removedWinPositions = CollapsingBonusEngine.GetRemoveWinPositions(winPositions);

            Assert.AreEqual(winPositions.Count, removedWinPositions.Count);
        }
        public int EngineShouldRetrieveCorrectCollapseMultiplier(int level, int iterations)
        {
            var config      = new Configuration();
            var targetWheel = MainGameEngine.GetTargetWheel(level, config, false);

            var targetMultiplier = CollapsingBonusEngine.GetCollapseMultiplier(config.BonusConfig.Collapse.Multipliers, iterations);

            return(targetMultiplier);
        }
示例#30
0
 //when make actor, need engine
 public void SetMainGameEngine(MainGameEngine _engine)
 {
     engine = _engine;
     SetUp();
     // Type thisType = this.GetType();
     // MethodInfo theMethod = thisType.GetMethod("Update");
     // theMethod.Invoke(this, userParameters);
     // engine.setUps.Add(FirstUpdate);
 }