Beispiel #1
0
        public void playAgain()
        {
            if (CurrentRoom != null)
            {
                if (CurrentRoom.FirstUser.Username == Message)
                {
                    CurrentRoom.FirstUser.Player.PlayAgain = true;
                    if (!CurrentRoom.SecondUser.Player.PlayAgain)
                    {
                        BasicPacket bp = new BasicPacket(GameProtocol.PlayAgain());
                        Othello.Server.SendPacket(CurrentRoom.SecondUser.Socket, bp.getData());
                    }
                }
                else if (CurrentRoom.SecondUser.Username == Message)
                {
                    CurrentRoom.SecondUser.Player.PlayAgain = true;
                    if (!CurrentRoom.FirstUser.Player.PlayAgain)
                    {
                        BasicPacket bp = new BasicPacket(GameProtocol.PlayAgain());
                        Othello.Server.SendPacket(CurrentRoom.FirstUser.Socket, bp.getData());
                    }
                }

                if (CurrentRoom.isAblePlayAgain())
                {
                    CurrentRoom.PlayAgain();
                    CurrentRoom.resetPlayAgain();
                }
            }
        }
Beispiel #2
0
        public void playerReady()
        {
            if (CurrentRoom != null)
            {
                if (CurrentRoom.FirstUser != null && CurrentRoom.FirstUser.Username == Message)
                {
                    CurrentRoom.FirstUser.Player.ReadyToStart = true;
                    if (!CurrentRoom.SecondUser.Player.ReadyToStart)
                    {
                        BasicPacket p = new BasicPacket(GameProtocol.PlayerReady());
                        Othello.Server.SendPacket(CurrentRoom.SecondUser.Socket, p.getData());
                    }
                }
                else if (CurrentRoom.SecondUser != null && CurrentRoom.SecondUser.Username == Message)
                {
                    CurrentRoom.SecondUser.Player.ReadyToStart = true;
                    if (!CurrentRoom.FirstUser.Player.ReadyToStart)
                    {
                        BasicPacket p = new BasicPacket(GameProtocol.PlayerReady());
                        Othello.Server.SendPacket(CurrentRoom.FirstUser.Socket, p.getData());
                    }
                }

                if (CurrentRoom.areBothPlayersReady())
                {
                    CurrentRoom.startGame();
                    CurrentRoom.FirstUser.Player.ReadyToStart  = false;
                    CurrentRoom.SecondUser.Player.ReadyToStart = false;
                }
            }
        }
Beispiel #3
0
        public void doLogin(Socket clientSocket)
        {
            string[] fields   = Message.Split('|');
            string   username = fields[0];
            string   password = fields[1];
            User     user     = Singleton.Singleton.Instance.DatabaseConnection.isPasswordRight(username, password);

            if (user != null)
            {
                if (Singleton.Singleton.Instance.isUserLogged(username))
                {
                    BasicPacket bp = new BasicPacket(GameProtocol.AlreadyOnlinePacketID());
                    Othello.Server.SendPacket(clientSocket, bp.getData());
                }
                else
                {
                    user.InGame = false;
                    user.Socket = clientSocket;
                    Singleton.Singleton.Instance.ListOfUsersLogged.Add(user);
                    //Send to current user logged the list with all the users logged and the status of them
                    string PacketMessage = "";
                    foreach (User u in Singleton.Singleton.Instance.ListOfUsersLogged)
                    {
                        if (u.Username == username)
                        {
                            continue;
                        }
                        PacketMessage += u.Username + ":" + u.IsChallenged + ":" + u.InGame + "|";
                        MessagePacket messagePacket = new MessagePacket(GameProtocol.AlertUsersNewUserLoggedID(), username + ":False");
                        Othello.Server.SendPacket(u.Socket, messagePacket.getData());
                    }
                    MessagePacket packet = new MessagePacket(GameProtocol.UsersLoggedListPacketID(), PacketMessage);
                    Othello.Server.SendPacket(user.Socket, packet.getData());
                }
            }
            else
            {
                BasicPacket bp = new BasicPacket(GameProtocol.FailedLoginPacketID());
                Othello.Server.SendPacket(clientSocket, bp.getData());
            }
        }
Beispiel #4
0
        public static void Handle(byte[] packet, Socket clientSocket)
        {
            ushort packetType   = BitConverter.ToUInt16(packet, 0);
            ushort packetLength = BitConverter.ToUInt16(packet, 2);


            switch (packetType)
            {
            case 100:     //Login
                MessagePacket MessagePacket = new MessagePacket(packet);
                MessagePacket.doLogin(clientSocket);
                break;

            case 110:     // Register
                MessagePacket = new MessagePacket(packet);
                MessagePacket.registerAccount(clientSocket);
                break;

            case 200:     // GLOBAL CHAT MESSAGE
                MessagePacket = new MessagePacket(packet);
                MessagePacket.doGlobalChat();
                break;

            case 201:     // ROOM CHAT MESSAGE
                MessageRoomPacket MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.doRoomChat(clientSocket, packet);
                break;

            case 250:     // CHALLENGE PACKET (USERNAME CHALLANGED YOU ... )
                MessagePacket = new MessagePacket(packet);
                MessagePacket.sendAfterChallengeAction();
                break;

            case 257:     // USER ACCEPTED THE CHALLENGE
                MessagePacket = new MessagePacket(packet);
                MessagePacket.playerAcceptedTheChallenge();
                break;

            case 258:     // USER REFUSED THE CHALLENGE
                MessagePacket = new MessagePacket(packet);
                MessagePacket.notifyUsersAfterChallengeRefuse();
                break;

            case 260:     // USER IGNORED THE CHALLENGE
                MessagePacket = new MessagePacket(packet);
                MessagePacket.notifyUsersAfterChallengeIgnore();
                break;


            case 403:     // Turn Move
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.doChangesAfterTurn();
                break;

            case 406:    //Play Again
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.playAgain();
                break;

            case 407:    //Surrender
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.surrender();
                break;

            case 501:     // PLAYER READY
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.playerReady();
                break;

            case 995:    // Back to lobby after gameover
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.backToLobby();
                break;

            case 997:    // User quit while in game -> send surr to opponent and disc to other users
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.opponentQuitWhileInGame();
                break;

            case 996:    // User quit after game -> send user left the room
                MessageRoomPacket = new MessageRoomPacket(packet);
                MessageRoomPacket.opponentQuitAfterEndGame();
                break;

            case 998:    // User logout
                BasicPacket basicPacket = new BasicPacket(packet);
                basicPacket.userLogout(clientSocket);
                break;

            case 999:    // User apllication close
                basicPacket = new BasicPacket(packet);
                basicPacket.applicationClose(clientSocket);
                break;
            }
        }