public void BroadcastSeatInfo(GamePlayer player)
 {
     if (seatReverse.ContainsKey(player))
         BroadCastSeatInfo(seatReverse[player]);
 }
 private void SendAllPlayerInfo(GamePlayer recepient)
 {
     for (int i = 0; i < MAX_SEAT; i++)
     {
         SendPlayerInfo(recepient, i);
     }
 }
 private void SendPlayerInfo(GamePlayer recepient, int seatnum)
 {
     if (seat.ContainsKey(seatnum))
     {
         recepient.Tunnel.SendMessage(String.Format(
             "seatinfo:{0},{1},{2}",
             seatnum, seat[seatnum].Name, seat[seatnum].Wallet
             )
         );
     }
     else
     {
         recepient.Tunnel.SendMessage(String.Format(
             "seatinfo:{0},{1},{2}",
             seatnum, "", 0
             )
         );
     }
 }
        private bool JoinGame(GamePlayer player, int seatnum)
        {
            if (seat.ContainsKey(seatnum))
            {
                Logger.Log(LogType.Error, player.Name + " tried to take an occupied seat");
            }
            else
            {
                if (seatnum >= 0 && seatnum < MAX_SEAT)
                {
                    if (seat.ContainsValue(player) == false)
                    {
                        seat.Add(seatnum, player);
                        seatReverse.Add(player, seatnum);
                        player.Tunnel.SendMessage("ok");
                        BroadCastSeatInfo(seatnum);
                        return true;
                    }
                    else
                    {
                        Logger.Log(LogType.Error, player.Name + " tried to sit without standing up first");
                    }
                }
                else
                {
                    Logger.Log(LogType.Error, player.Name + " tried to take a non-existant seat");
                }
            }

            return false;
        }
        public bool WatchGame(GamePlayer player)
        {
            if (spectators.ContainsKey(player.Name))
            {
                if (spectators[player.Name].Tunnel.SendMessage("alreadyin"))
                {
                    Logger.Log(LogType.Error, player.Name + " tried to join a game that he is already in");
                    return false;
                }
                else
                {
                    Logger.Log(LogType.Error, player.Name + " is rejoining a game he never properly quit from");
                    spectators.Remove(player.Name);
                }
            }

            player.Tunnel.SendMessage(player.Name);
            player.Tunnel.SendMessage(name);

            spectators.Add(player.Name, player);
            SendAllPlayerInfo(player);

            player.SetBank(player.Bank);

            return true;
        }
        public void OnStandEvent(GamePlayer player)
        {
            if (seatReverse.ContainsKey(player))
            {
                int i = seatReverse[player];
                seat.Remove(i);
                seatReverse.Remove(player);

                Logger.Log(LogType.Event, player.Name + " stood up");

                BroadCastSeatInfo(i);
            }
            else
            {
                Logger.Log(LogType.Error, player.Name + " tried to stand up when he wasn't sitting");
            }
        }
        public void OnQuitEvent(GamePlayer player)
        {
            if (seat.ContainsValue(player))
            {
                List<int> toRemoveA = new List<int>();
                List<GamePlayer> toRemoveB = new List<GamePlayer>();

                foreach (KeyValuePair<int, GamePlayer> i in seat)
                {
                    if (i.Value.Name == player.Name)
                    {
                        toRemoveA.Add(i.Key);
                        toRemoveB.Add(i.Value);
                    }
                }

                foreach (int i in toRemoveA)
                {
                    seat.Remove(i);
                }

                foreach (GamePlayer i in toRemoveB)
                {
                    seatReverse.Remove(i);
                }
            }

            if (spectators.ContainsKey(player.Name))
            {
                spectators.Remove(player.Name);
            }

            //player.Destroy();
        }
 public bool OnAttemptSitEvent(GamePlayer player, int seatnum)
 {
     return JoinGame(player, seatnum);
 }