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)))); }
public bool FreeSpinResultShouldFlagSpinResultWithBonusOnScatterOrCollapse(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, config.BonusConfig.FreeSpin.Multipliers.First()); var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel); var freeSpinResult = new FreeSpinResult(spinBet, wheel, null, winPositions, bonusPositions, config.BonusConfig.Collapse.Multipliers.First()); return(freeSpinResult.HasBonus); }
public decimal FreeSpinResultShouldCreateCorrectPayout(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 = FreeSpinBonusEngine.GenerateWinPositions( config.Payline, config.FreeGamePayTable, config.FreeGameScatterSymbols, wheel, spinBet.LineBet, spinBet.Lines, 1); var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel); var freeSpinResult = new FreeSpinResult(spinBet, wheel, null, winPositions, bonusPositions); return(freeSpinResult.Win); }
public decimal FreeSpinResultShouldCreateCorrectPayout(string wheelString, int replacementSymbol, int freeSpinSelection, int freeSpinMultiplier, 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 freeSpinMode = FreeSpinBonusEngine.GetFreeSpinMode(freeSpinSelection); FreeSpinResult freeSpinResult = null; var wheel = new Wheel(Game.WheelWidth, Game.WheelHeight, wheelString.ToFormattedWheelString()); var stackedReels = MainGameEngine.GetStackedSymbols(wheel); var bonusPositions = MainGameEngine.GenerateBonusPositions(wheel); var hasWildStackedReels = stackedReels.Any(sr => sr.Symbol == Symbols.Wild); var multiplier = hasWildStackedReels ? freeSpinMultiplier : spinBet.Multiplier; if (wheel.CountDistinct(Symbols.Mystery) > 0) { var replacedMysterySymbolWheel = MainGameEngine.GenerateReplacedMysterySymbolWheel(config, wheel, replacementSymbol); var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, replacedMysterySymbolWheel, spinBet.LineBet, spinBet.Lines, multiplier); freeSpinResult = new FreeSpinResult(level, spinBet, wheel, winPositions, bonusPositions, multiplier, replacementSymbol); } else /// Calculate wins with initial wheel { var winPositions = MainGameEngine.GenerateWinPositions( config.Payline, config.PayTable, wheel, spinBet.LineBet, spinBet.Lines, multiplier); freeSpinResult = new FreeSpinResult(level, spinBet, wheel, winPositions, bonusPositions, multiplier); } return(freeSpinResult.Win); }