public void setup() { players = new List<string>(); for (int i = 0; i < 5; i++) players.Add("Player" + i); potMan = new PotManager(players); }
public void setup() { players = new Seat[5]; for (int i = 0; i < 5; i++) players[i] = new Seat(i, "Player" + i, 1000); potMan = new PotManager(players); }
public void setup() { players = new List <string>(); for (int i = 0; i < 5; i++) { players.Add("Player" + i); } potMan = new PotManager(players); }
public FastPotManagerTest() { players = new Seat[5]; for (int i = 0; i < 5; i++) { players[i] = new Seat(i, "Player" + i, 1000); } potMan = new PotManager(players); }
public void setup() { players = new Seat[5]; for (int i = 0; i < 5; i++) { players[i] = new Seat(i, "Player" + i, 1000); } potMan = new PotManager(players); }
private void Awake() { if (PotManager.pot_manager == null) { PotManager.pot_manager = this; } else { if (PotManager.pot_manager != this) { Destroy(this.gameObject); } } }
/// <summary> /// Plays a hand from the start. Note that this method will <b>not</b> resume a game from a saved hand _history. /// </summary> /// <param name="handHistory">An new hand _history with the list of players and the game parameters.</param> public void PlayHand(HandHistory handHistory) { #region Hand Setup _seats = handHistory.Players; handHistory.HoleCards = new ulong[_seats.Length]; handHistory.DealtCards = 0UL; handHistory.Flop = 0UL; handHistory.Turn = 0UL; handHistory.River = 0UL; //Setup the hand _history this._history = handHistory; //Create a new map from player names to player chips for the BetManager Dictionary<string, double> namesToChips = new Dictionary<string, double>(); //Create a new list of players for the PlayerManager _playerIndices = new CircularList<int>(); _playerIndices.Loop = true; for (int i = 0; i < _seats.Length; i++) { namesToChips[_seats[i].Name] = _seats[i].Chips; if (_seats[i].SeatNumber == _history.Button) { _buttonIdx = i; _utgIdx = (i + 1) % _seats.Length; } } for (int i = (_buttonIdx + 1) % _seats.Length; _playerIndices.Count < _seats.Length;) { _playerIndices.Add(i); i = (i + 1) % _seats.Length; } _betManager = new BetManager(namesToChips, _history.BettingStructure, _history.AllBlinds, _history.Ante); _potManager = new PotManager(_seats); #endregion if (_betManager.In > 1) { GetBlinds(); DealHoleCards(); } _history.CurrentRound = Round.Preflop; if (_betManager.CanStillBet > 1) { GetBets(_history.PreflopActions); } if (_betManager.In <= 1) { payWinners(); return; } DealFlop(); _history.CurrentRound = Round.Flop; if (_betManager.CanStillBet > 1) { GetBets(_history.FlopActions); } if (_betManager.In <= 1) { payWinners(); return; } DealTurn(); _history.CurrentRound = Round.Turn; if (_betManager.CanStillBet > 1) { GetBets(_history.TurnActions); } if (_betManager.In <= 1) { payWinners(); return; } DealRiver(); _history.CurrentRound = Round.River; if (_betManager.CanStillBet > 1) { GetBets(_history.RiverActions); } if (_betManager.In <= 1) { payWinners(); return; } payWinners(); _history.ShowDown = true; _history.CurrentRound = Round.Over; }
public HandHistory Resume(PokerHand savedHand, CachedHand cache) { _cache = cache; #region Restore hand context _seats = new Seat[savedHand.Players.Length]; var orderedPlayers = savedHand.Players.OrderBy(p => p.Seat); for (int i = 0; i < _seats.Length; i++) { var player = orderedPlayers.ElementAt(i); _seats[i] = new Seat(player.Seat, player.Name, (double)player.Stack); } ulong handNum = ulong.Parse(savedHand.Context.ID); uint button = (uint)savedHand.Context.Button; List<double> blinds = new List<double>(); if (savedHand.Context.SmallBlind > 0m) blinds.Add((double)savedHand.Context.SmallBlind); if (savedHand.Context.BigBlind > 0m) blinds.Add((double)savedHand.Context.BigBlind); double ante = (double)savedHand.Context.Ante; BettingStructure bs = BettingStructure.None; switch (savedHand.Context.BettingType) { case BettingType.FixedLimit: bs = BettingStructure.Limit; break; case BettingType.NoLimit: bs = BettingStructure.NoLimit; break; case BettingType.PotLimit: bs = BettingStructure.PotLimit; break; default: throw new Exception("Unspecified betting structure."); } _history = new HandHistory(_seats, handNum, button, blinds.ToArray(), ante, bs); #endregion //Create a new map from player names to player chips for the BetManager Dictionary<string, double> namesToChips = new Dictionary<string, double>(); //Create a new list of players for the PlayerManager _playerIndices = new CircularList<int>(); _playerIndices.Loop = true; // Initialize the names to chips map and find the index of the button for (int i = 0; i < _seats.Length; i++) { namesToChips[_seats[i].Name] = _seats[i].Chips; if (_seats[i].SeatNumber == _history.Button) { _buttonIdx = i; _utgIdx = (i + 1) % _seats.Length; } } // Create a circular list of players, in order of first to act for (int i = (_buttonIdx + 1) % _seats.Length; _playerIndices.Count < _seats.Length; ) { _playerIndices.Add(i); i = (i + 1) % _seats.Length; } _betManager = new BetManager(namesToChips, _history.BettingStructure, _history.AllBlinds, _history.Ante); _potManager = new PotManager(_seats); _history.CurrentRound = Round.Predeal; if(savedHand.Blinds == null) savedHand.Blinds = new Blind[0]; if (!restoreBlinds(savedHand)) return _history; DealHoleCards(); if (_betManager.In <= 1) { _history.CurrentRound = Round.Over; return _history; } _history.CurrentRound = Round.Preflop; if (_betManager.CanStillBet > 1) { if(savedHand.Rounds == null || savedHand.Rounds.Length == 0) savedHand.Rounds = new PokerHandHistory.Round[] { new PokerHandHistory.Round(){Actions = new PokerHandHistory.Action[0]} }; else if(savedHand.Rounds[0].Actions == null) savedHand.Rounds[0].Actions = new PokerHandHistory.Action[0]; if (!restoreBets(savedHand.Rounds[0].Actions, _history.PreflopActions)) return _history; } if (_betManager.In <= 1) { payWinners(); _history.CurrentRound = Round.Over; return _history; } DealFlop(); _history.CurrentRound = Round.Flop; if (_betManager.CanStillBet > 1) { if (savedHand.Rounds.Length < 2) savedHand.Rounds = new PokerHandHistory.Round[]{savedHand.Rounds[0], new PokerHandHistory.Round(){Actions = new PokerHandHistory.Action[0]}}; else if(savedHand.Rounds[1].Actions == null) savedHand.Rounds[1].Actions = new PokerHandHistory.Action[0]; if (!restoreBets(savedHand.Rounds[1].Actions, _history.FlopActions)) return _history; } if (_betManager.In <= 1) { payWinners(); _history.CurrentRound = Round.Over; return _history; } DealTurn(); _history.CurrentRound = Round.Turn; if (_betManager.CanStillBet > 1) { if (savedHand.Rounds.Length < 3) savedHand.Rounds = new PokerHandHistory.Round[]{savedHand.Rounds[0], savedHand.Rounds[1], new PokerHandHistory.Round(){Actions = new PokerHandHistory.Action[0]}}; else if(savedHand.Rounds[2].Actions == null) savedHand.Rounds[2].Actions = new PokerHandHistory.Action[0]; if (!restoreBets(savedHand.Rounds[2].Actions, _history.TurnActions)) return _history; } if (_betManager.In <= 1) { payWinners(); _history.CurrentRound = Round.Over; return _history; } DealRiver(); _history.CurrentRound = Round.River; if (_betManager.CanStillBet > 1) { if (savedHand.Rounds.Length < 4) savedHand.Rounds = new PokerHandHistory.Round[]{savedHand.Rounds[0], savedHand.Rounds[1], savedHand.Rounds[2], new PokerHandHistory.Round(){Actions = new PokerHandHistory.Action[0]}}; else if(savedHand.Rounds[3].Actions == null) savedHand.Rounds[3].Actions = new PokerHandHistory.Action[0]; if (!restoreBets(savedHand.Rounds[3].Actions, _history.RiverActions)) return _history; } if (_betManager.In <= 1) { payWinners(); _history.CurrentRound = Round.Over; return _history; } payWinners(); _history.ShowDown = true; _history.CurrentRound = Round.Over; return _history; }