Exemplo n.º 1
0
        public void applicationClose(Socket clientSocket)
        {
            User user = null;

            foreach (User u in Singleton.Singleton.Instance.ListOfUsersLogged)
            {
                if (u.Socket == clientSocket)
                {
                    user = u;
                    break;
                }
            }

            if (user != null)
            {
                MessagePacket packet = new MessagePacket(GameProtocol.UserDisconnected(), user.Username);
                foreach (User aux in Singleton.Singleton.Instance.ListOfUsersLogged)
                {
                    if (aux == user)
                    {
                        continue;
                    }
                    Othello.Server.SendPacket(aux.Socket, packet.getData());
                }
                Singleton.Singleton.Instance.ListOfUsersLogged.Remove(user);
            }
            Console.WriteLine("Client Disconnected!");
            clientSocket.Shutdown(SocketShutdown.Both);
            clientSocket.Close();
        }
Exemplo n.º 2
0
        public void opponentQuitWhileInGame()
        {
            if (CurrentRoom.FirstUser != null && CurrentRoom.FirstUser.Username == Message)
            {
                Singleton.Singleton.Instance.ListOfUsersLogged.Remove(CurrentRoom.FirstUser);
                CurrentRoom.SendGameOver(CurrentRoom.SecondUser,
                                         "You won!\n Your opponent got disconnected.");
                foreach (User user in Singleton.Singleton.Instance.ListOfUsersLogged)
                {
                    if (user.Username == CurrentRoom.SecondUser.Username)
                    {
                        MessagePacket pack = new MessagePacket(GameProtocol.OpponentQuitWhileInGame(), CurrentRoom.FirstUser.Username);
                        Othello.Server.SendPacket(user.Socket, pack.getData());
                        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)
            {
                CurrentRoom.SendGameOver(CurrentRoom.FirstUser,
                                         "You won!\n Your opponent got disconnected.");
                Singleton.Singleton.Instance.ListOfUsersLogged.Remove(CurrentRoom.SecondUser);
                foreach (User user in Singleton.Singleton.Instance.ListOfUsersLogged)
                {
                    if (user.Username == CurrentRoom.FirstUser.Username)
                    {
                        MessagePacket pack = new MessagePacket(GameProtocol.OpponentQuitWhileInGame(), CurrentRoom.SecondUser.Username);
                        Othello.Server.SendPacket(user.Socket, pack.getData());
                        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);
            }
        }
Exemplo n.º 3
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);
            }
        }