private RiskyPickOffer GetOffer(RiskyPickGameBoard gameBoard) { var closedCases = gameBoard.Cases.Values.Where(c => !c.IsOpened).ToList(); var edgeCount = closedCases.Sum(c => c.Edges); var tokenCount = closedCases.Sum(c => RiskyPickGameBoard.TokensNumerator / c.Edges); var offerAverage = closedCases.Count(); return(new RiskyPickOffer { Edges = (int)Math.Ceiling((decimal)edgeCount / offerAverage), Tokens = (int)Math.Ceiling((decimal)tokenCount / offerAverage), HighestRisk = closedCases.Max(c => c.Edges), LowestRisk = closedCases.Min(c => c.Edges), }); }
public override Result <Session> PerformCommand(Session session, string line) { return(Result.Ok(session.Clone()) .Ensure(s => !s.Domme.WasGreeted, "Risky Pick cannot be started from the Games window when there is a session in progress!") .Ensure(s => s.GameBoard == null, "A new Risky Pick game cannot be started until the current game is finished!") // .Ensure(s => s.GameBoard.EdgesOwed == 0, "You still owe edges from your previous game!") .Ensure(s => s.Sub.Purse[TokenDenomination.Bronze] >= RiskyPickCost, "It costs 100 Bronze Tokens to play Risky Pick!") .Ensure(s => File.Exists(_pathsAccessor.RiskyPickScript), _pathsAccessor.RiskyPickScript + " was not found.") .OnSuccess(s => { var smd = new ScriptMetaData { Key = _pathsAccessor.RiskyPickScript, Info = "Risky Pick Game. Similar to Deal or No Deal", IsEnabled = true, Name = "Risky Pick Game" }; var script = new Script(smd, File.ReadAllLines(_pathsAccessor.RiskyPickScript)); s.Sub.Purse[TokenDenomination.Bronze] = -RiskyPickCost; s.GameBoard = RiskyPickGameBoard.Create(GetRiskyPickCaseValues()); OnCommandProcessed(s, script); //RiskyState = True // mainWindow.ssh.RiskyDeal = True // SetupRiskyPick() // PlayRiskyPickButton.Text = "" // PlayRiskyPickButton.Enabled = False // mainWindow.ssh.StrokeTauntVal = -1 // If Directory.Exists(My.Settings.DomImageDir) AndAlso mainWindow.ssh.SlideshowLoaded Then // mainWindow.LoadDommeImageFolder() // End If // s.BeginSession(script) return s; })); }