Exemplo n.º 1
0
        public void opponentQuitAfterEndGame()
        {
            if (CurrentRoom.FirstUser != null && CurrentRoom.FirstUser.Username == Message)
            {
                Console.WriteLine("Client " + Message + " Disconnected!");
                CurrentRoom.FirstUser.Socket.Shutdown(SocketShutdown.Both);
                CurrentRoom.FirstUser.Socket.Close();
                Singleton.Singleton.Instance.ListOfUsersLogged.Remove(CurrentRoom.FirstUser);

                if (CurrentRoom.FirstUser == null && CurrentRoom.SecondUser == null)
                {
                    Singleton.Singleton.Instance.ListOfRooms.Remove(CurrentRoom);
                }
                else
                {
                    MessagePacket mp = new MessagePacket(GameProtocol.OpponentQuitAfterEndGame(), Message);
                    Othello.Server.SendPacket(CurrentRoom.SecondUser.Socket, mp.getData());
                    foreach (User user in Singleton.Singleton.Instance.ListOfUsersLogged)
                    {
                        if (user.Username == CurrentRoom.SecondUser.Username)
                        {
                            continue;
                        }
                        MessagePacket p = new MessagePacket(GameProtocol.UserDisconnected(), CurrentRoom.FirstUser.Username);
                        Othello.Server.SendPacket(user.Socket, p.getData());
                    }
                    CurrentRoom.FirstUser = null;
                }
            }
            else if (CurrentRoom.SecondUser != null && CurrentRoom.SecondUser.Username == Message)
            {
                Console.WriteLine("Client " + Message + " Disconnected!");
                CurrentRoom.SecondUser.Socket.Shutdown(SocketShutdown.Both);
                CurrentRoom.SecondUser.Socket.Close();
                Singleton.Singleton.Instance.ListOfUsersLogged.Remove(CurrentRoom.SecondUser);

                if (CurrentRoom.FirstUser == null && CurrentRoom.SecondUser == null)
                {
                    Singleton.Singleton.Instance.ListOfRooms.Remove(CurrentRoom);
                }
                else
                {
                    MessagePacket mp = new MessagePacket(GameProtocol.OpponentQuitAfterEndGame(), Message);
                    Othello.Server.SendPacket(CurrentRoom.FirstUser.Socket, mp.getData());
                    foreach (User user in Singleton.Singleton.Instance.ListOfUsersLogged)
                    {
                        if (user.Username == CurrentRoom.FirstUser.Username)
                        {
                            continue;
                        }
                        MessagePacket p = new MessagePacket(GameProtocol.UserDisconnected(), CurrentRoom.SecondUser.Username);
                        Othello.Server.SendPacket(user.Socket, p.getData());
                    }
                    CurrentRoom.SecondUser = null;
                }
            }

            if (CurrentRoom.FirstUser == null && CurrentRoom.SecondUser == null)
            {
                Singleton.Singleton.Instance.ListOfRooms.Remove(CurrentRoom);
            }
        }