private void AddBidEvent(BidInfo bid) { CurrentBidding.AddBid(bid); Players[bid.Position].Bid = bid.Bid; Players[bid.Position].AllIn = bid.IsAllIn(); Players[bid.Position].Fold = bid.IsFold(); JoinedPlayers[bid.UserId].Cash = bid.NewCashValue; if (bid.Bid > MaxBid) { MaxBid = bid.Bid; } }
public long GetMinBet() { var maxBet = CurrentBidding.CurrentStage.GetMaxBet(); if (maxBet == 0) //not Pre-Flop only { return(BigBlind); } if (MaxRaisedValue == 0 && CurrentBidding.IsStage(BiddingStagesEnum.PreFlop)) { return(maxBet + SmallBlind); } return(maxBet + MaxRaisedValue); }
public GameTableState() { On((TableCreated e) => { TableId = e.Id; SmallBlind = e.SmallBlind; BuyIn = e.BuyIn; Dealer = null; JoinedPlayers = new Dictionary <string, TablePlayer>(); Players = new Dictionary <int, GamePlayer>(); }); On((GameFinished e) => { GameId = null; MaxBid = 0; CurrentBidding = null; foreach (var winner in e.Winners) { JoinedPlayers[winner.UserId].Cash += winner.Amount; } }); On((GameCreated e) => { GameId = e.GameId; Pack = new Pack(e.Cards); Deck = new List <Card>(); SitPlayers(e.Players); CurrentBidding = new BiddingInfo(e.Players.Count); MaxRaisedValue = 0; }); On((DealerAssigned e) => { Dealer = e.Dealer.Position; }); On((PlayerJoined e) => JoinedPlayers.Add(e.UserId, new TablePlayer() { Cash = e.Cash, Position = e.Position, UserId = e.UserId, })); On((CardsDealed e) => { foreach (var playerCard in e.Cards) { Pack.Remove(playerCard.Card); Players[playerCard.Position].Cards.Add(playerCard.Card); } }); On((BidMade e) => AddBidEvent(e.Bid)); On((BiddingFinished e) => { MaxRaisedValue = 0; }); On((NextPlayerTurned e) => { CurrentPlayer = e.Player.Position; MaxRaisedValue = e.MaxRaisedValue; }); On((DeckDealed e) => { foreach (var card in e.Cards) { Pack.Remove(card); Deck.Add(card); } CurrentBidding.NextStage(); }); }