public RoundIdResponse StartNewRound(StartNewRoundRequest newRoundRequest) { string heroName = newRoundRequest.Players[newRoundRequest.HeroIndex].Name; string buttonName = newRoundRequest.Players[newRoundRequest.ButtonIndex].Name; List <Contracts.Player> sittingInPlayers = newRoundRequest.Players.Where(p => !p.SittingOut).ToList(); int heroIndex = sittingInPlayers.FindIndex(p => string.Equals(p.Name, heroName)); int buttonIndex = sittingInPlayers.FindIndex(p => string.Equals(p.Name, buttonName)); var round = new Round(new RoundInput(sittingInPlayers.Count, buttonIndex, sittingInPlayers.Select(p => p.Name).ToList(), sittingInPlayers.Select(p => (int)p.StackSize).ToList(), newRoundRequest.SmallBlindSize, newRoundRequest.BigBlindSize)); Rounds.Add(round.RoundId, round); RoundSetups.Add(round.RoundId, new RoundSetup() { HeroIndex = heroIndex }); Brains.Add(round.RoundId, new Brain()); round.RecordMove(new Move(round.GetCurrentPlayer(), new Decision(DecisionType.Ante, round.SmallBlindSize), StageEnum.Preflop)); round.MoveToNextPlayer(); round.RecordMove(new Move(round.GetCurrentPlayer(), new Decision(DecisionType.Ante, round.BigBlindSize), StageEnum.Preflop)); round.MoveToNextPlayer(); return(new RoundIdResponse() { RoundId = round.RoundId, Action = new ExpectedAction { Action = ExpectedActionEnum.HeroHoles } }); }
private void ProcessSetup(string[] parts, out Guid roundId) { //"Setup-Alice:100-Bob:100-Chris:100-David:1000-Ellen:1000-Frank:1000-5/10/4/5", var request = new StartNewRoundRequest(); request.Players = new List <Player>(); for (int i = 1; i <= 6; i++) { var segments = parts[i].Split(':'); request.Players.Add(new Player() { Name = segments[0], StackSize = int.Parse(segments[1]) }); } var numbers = parts[7].Split('/'); request.SmallBlindSize = int.Parse(numbers[0]); request.BigBlindSize = int.Parse(numbers[1]); request.HeroIndex = int.Parse(numbers[2]); request.ButtonIndex = int.Parse(numbers[3]); if (parts.Length == 9) { var segments = parts[8].Split(':'); foreach (var segment in segments) { request.Players[int.Parse(segment)].SittingOut = true; } } roundId = _rm.StartNewRound(request).RoundId; }
public IActionResult StartNewRound([FromBody] StartNewRoundRequest request) { var response = RoundManager.Instance.StartNewRound(request); return(Ok(response)); }