public PlayerDecisionResponse GetPlayerDecision(Player player, double minimumBet, DecisionType[] availableOptions)
        {
            PlayerDecisionResponse pd = new PlayerDecisionResponse();
            pd.Type = DecisionType.TimeOutAndFold;

            PlayerDecisionRequest pdr = new PlayerDecisionRequest();
            pdr.RequestId = Guid.NewGuid().ToString();
            pdr.MinimumBet = minimumBet;
            pdr.AvailableOptions = availableOptions;

            AddToOutgoingMessageQueue(GameMessageType.Client_ReceivePlayerDecisionRequest, pdr, player.ToList());

            int waitingFor = 0;
            while (waitingFor < Table.MAX_DECISION_TIME)
            {
                if (m_dicStorage.ContainsKey(pdr.RequestId))
                {
                    pd = (PlayerDecisionResponse)m_dicStorage[pdr.RequestId];
                    break;
                }

                //-- Perhaps the player has disconnected from the table
                if (Table.IsPlayerSittingAtTable(player.Name) == false)
                {
                    pd.Type = DecisionType.DisconnectAndFold;
                    break;
                }

                m_tcGameFlow.WaitHereFor(100);
                waitingFor += 100;
            }

            return pd;
        }
 public void SendJoinTableResponse(Player recipient, JoinTableResponse jtres)
 {
     AddToOutgoingMessageQueue(GameMessageType.Client_ReceiveJoinTableResponse, jtres, recipient.ToList());
 }
 public void SendPersonalAnnouncement(Player recipient, string message)
 {
     AddToOutgoingMessageQueue(GameMessageType.Client_ReceivePersonalAnnouncement, message, recipient.ToList());
 }
 public void SendForcedTableDisconnectionNotice(Player recipient, string reason)
 {
     ForcedTableLeaveNotice fln = new ForcedTableLeaveNotice();
     fln.TableId = Table.TableId;
     fln.Message = reason;
     fln.PlayerName = recipient.Name;
     AddToOutgoingMessageQueue(GameMessageType.Client_ReceiveForcedTableLeaveNotice, fln, recipient.ToList());
 }