コード例 #1
0
        public override void clientCommandProcessor(Models.ClientMessage message)
        {
            switch (message.Command)
            {
            case "DISCONNECTED":
                parent.disconnected("Connection to server was lost and a log regarding the incident was created and deposited inside 'Logs' in apps home directory.", 0);
                break;

            case "REMOTEDISCONNECT":
                parent.disconnected("Your account was logged in from a different location.", -1);
                break;

            case "NODECKSFOUND":
                loadedDataChecklist[0] = true;
                break;

            case "DECKSDELIVERED":
                commandArgumentsToDecks(message.stringArguments);
                parent.loadDecksToGUI();
                loadedDataChecklist[0] = true;
                break;

            case "DECKCREATED":
                processDeckCreated(message);
                break;

            default: break;
            }
        }
コード例 #2
0
        public Models.Response processLeaveLobby(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);

            // we change player's location to wherever he is now that he left the lobby
            lobbyRoomData.changeLocation(sender, message.stringArguments[0]);

            // we remove any game rooms created by the player and remove the player from any rooms he joined

            response.socketsToNotify = lobbyRoomData.lobbyRoomUsersToSocketList();
            response.socketsToNotify.Remove(sender);
            response.responseCommandToSockets = "REMOVELOBBYROOMUSER";
            response.commandStringArgumentsToSockets.Add(lobbyRoomData.getNickNameBySocket(sender));

            if (message.stringArguments[0] != "PreGameRoom")
            {
                gameRoomData.removeClient(sender);
            }
            else
            {
                response.commandStringArgumentsToSockets.Add(string.Empty);
            }

            return(response);
        }
        public Models.Response processReadyToStart(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);
            Models.Game     game;

            game = onGoingGamesData.getGameByID(Int32.Parse(message.stringArguments[0]));

            if (game.isPlayer1(sender))
            {
                game.isP1Ready = true;
            }
            else
            {
                game.isP2Ready = true;
            }

            if (game.isP1Ready && game.isP2Ready)
            {
                response.responseCommandToSockets = "READYTOGO";
                response.socketsToNotify.Add(game.Player1Socket);
                response.socketsToNotify.Add(game.Player2Socket);
            }

            return(response);
        }
コード例 #4
0
        public override void clientCommandProcessor(Models.ClientMessage message)
        {
            switch (message.Command)
            {
            case "LOGINPERMITTED":
                parent.logInPermitted();
                break;

            case "LOGINDENIED":
                parent.logInDenied();
                break;

            case "DISCONNECTED":
                parent.weGotDisconnected("Connection to server was lost and a log regarding the incident was created and deposited inside 'Logs' in apps home directory.", 0);
                break;

            case "REMOTEDISCONNECT":
                parent.weGotDisconnected("Your account was logged in from a different location.", -1);
                break;

            case "ALREADYLOGGEDIN":
                parent.alreadyLoggedIn();
                break;

            default: break;
            }
        }
コード例 #5
0
        public Models.Response processRegisterRequest(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);

            /*
             * message.Arguments:
             *
             * 0 - username
             * 1 - nickname
             * 2 - password
             * 3 - email
             */

            Tuple <bool, List <string> > dbRegisterResponse = _db.checkForRegisterInformation(message.stringArguments[0], message.stringArguments[1], message.stringArguments[3]);

            // if registration was successful
            if (dbRegisterResponse.Item1)
            {
                _db.insertNewUser(message.stringArguments[0], message.stringArguments[1], message.stringArguments[2], message.stringArguments[3]);
                response.responseCommandToSender = "REGISTERSUCCESSFULL";
            }
            else
            {
                response.responseCommandToSender        = "REGISTERFAILED";
                response.commandStringArgumentsToSender = dbRegisterResponse.Item2;
            }

            return(response);
        }
コード例 #6
0
        public Models.Response processNewChatMessage(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);

            response.socketsToNotify                 = lobbyRoomData.lobbyRoomUsersToSocketList();
            response.responseCommandToSockets        = message.Command;
            response.commandStringArgumentsToSockets = message.stringArguments;

            return(response);
        }
コード例 #7
0
        private void sendUpdateDeck()
        {
            Models.ClientMessage clientMessage = new Models.ClientMessage();
            clientMessage.Command      = "UPDATEDECK";
            clientMessage.intArguments = new List <int>()
            {
                (deck.DeckID)
            };
            clientMessage.stringArguments = new List <string>()
            {
                ctrl.collectionDeckToStringArgument(deck)
            };

            ctrl.send(clientMessage);
        }
コード例 #8
0
        public Models.Response processForceLogOutRequest(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);

            // message.Arguments[0] = username

            Socket s = _lobbyRoomData.getSocketByUsername(message.stringArguments[0]);

            if (s != null)
            {
                response.responseCommandToSockets = "REMOTEDISCONNECT";
                response.socketsToNotify.Add(s);
                _parent.removeClient(s);
            }

            return(response);
        }
コード例 #9
0
        private void processJoinPreGameRoom(Models.ClientMessage message)
        {
            int roomID;

            roomID = Int32.Parse(message.stringArguments[0]);

            foreach (Models.GameRoom gameRoom in GameRooms)
            {
                if (gameRoom.RoomID == roomID)
                {
                    if (gameRoom.Owner == userData.NickName)
                    {
                        send(new Models.ClientMessage("SETROOMSTATE", new List <string>()
                        {
                            roomID.ToString(), "Battle in progress..."
                        }));
                    }
                    break;
                }
            }
            parent.joinPreGameRoom(Int32.Parse(message.stringArguments[0]));
        }
コード例 #10
0
        public Models.Response processLogInRequest(Models.ClientMessage message, Socket sender)
        {
            Models.Response response = new Models.Response(sender);

            // message.Arguments[0] = username
            // message.Arguments[1] = password

            // check log in information
            if (_db.checkLogInCredentials(message.stringArguments[0], message.stringArguments[1]))
            {
                // check if user is already logged in
                if (_lobbyRoomData.checkUserLoggedIn(message.stringArguments[0]))
                {
                    response.responseCommandToSender = "ALREADYLOGGEDIN";
                }
                else
                {
                    // add user to list of logged in users
                    string nickname = _db.getNickNameOfUser(message.stringArguments[0]);
                    _lobbyRoomData.addUserToLoggedIn(message.stringArguments[0], nickname, sender);

                    // send log in confirmation message
                    response.responseCommandToSender = "LOGINPERMITTED";

                    // update every logged in user's lobby room
                    response.responseCommandToSockets = "ADDLOBBYROOMUSER";
                    response.commandStringArgumentsToSockets.Add(nickname);

                    response.socketsToNotify = _lobbyRoomData.lobbyRoomUsersToSocketList();
                    response.socketsToNotify.Remove(sender);
                }
            }
            else
            {
                response.responseCommandToSender = "LOGINDENIED";
            }

            return(response);
        }
コード例 #11
0
 public void messageProcessor(List <Models.Message> messageList)
 {
     foreach (Models.Message message in messageList)
     {
         try
         {
             if (message.Type == "ClientMessage")
             {
                 Models.ClientMessage cm = message.Value.ToObject <Models.ClientMessage>(); // parse Message to ClientMessage
                 clientCommandProcessor(cm);
             }
             else if (message.Type == "GameMessage")
             {
                 Models.GameMessage gm = message.Value.ToObject <Models.GameMessage>(); // parse Message to GameMessage
                 gameCommandProcessor(gm);
             }
         }
         catch (Exception ex)
         {
             logger.Log(ex.ToString());
         }
     }
 }
コード例 #12
0
        public override void clientCommandProcessor(Models.ClientMessage message)
        {
            switch (message.Command)
            {
            case "REGISTERSUCCESSFULL":
                parent.registerSuccessful();
                break;

            case "REGISTERFAILED":
                parent.registerFailed(message.stringArguments);
                break;

            case "DISCONNECTED":
                parent.disconnected("Connection to server was lost and a log regarding the incident was created and deposited inside 'Logs' in apps home directory.", 0);
                break;

            case "REMOTEDISCONNECT":
                parent.disconnected("Your account was logged in from a different location.", -1);
                break;

            default: break;
            }
        }
コード例 #13
0
        public override void clientCommandProcessor(Models.ClientMessage message)
        {
            switch (message.Command)
            {
            case "DISCONNECTED":
                parent.disconnected("Connection to server was lost and a log regarding the incident was created and deposited inside 'Logs' in apps home directory.", 0);
                break;

            case "REMOTEDISCONNECT":
                parent.disconnected("Your account was logged in from a different location.", -1);
                break;

            case "POPULATELOBBYROOM":
                parent.addLobbyRoomUsers(message.stringArguments);
                loadedDataChecklist[0] = true;
                break;

            case "ADDLOBBYROOMUSER":
                parent.addLobbyRoomUsers(message.stringArguments);
                break;

            case "REMOVELOBBYROOMUSER":
                parent.removeLobbyRoomUser(message.stringArguments[0]);
                if (message.stringArguments.Count == 1)
                {
                    removePlayerFromGameRooms(message.stringArguments[0]);
                }
                break;

            case "USERDATAFETCHED":
                if (isValidUserData(message.stringArguments))
                {
                    updateUserData(message.stringArguments);
                    parent.updateLoggedInAs(userData.NickName);
                    loadedDataChecklist[1] = true;
                }
                break;

            case "NEWCHATMESSAGE":
                parent.newChatMessage(message.stringArguments[0], message.stringArguments[1]);
                break;

            case "NOLOBBYROOMUSERS":
                loadedDataChecklist[0] = true;
                break;

            case "ERRORFETCHDATA":
                userData.Username = message.stringArguments[0];
                break;

            case "YOUGOTCARDS":
                parent.setCardCollection(message.CardCollection);
                loadedDataChecklist[3] = true;
                break;

            case "YOUGOTROOMS":
                populateGameRooms(message.stringArguments);
                loadedDataChecklist[2] = true;
                break;

            case "ADDGAMEROOM":
                createRoom(message.stringArguments[0]);
                break;

            case "CLOSEROOM":
                closeRoom(Int32.Parse(message.stringArguments[0]));
                break;

            case "LINKUSERTOROOM":
                linkUserToRoom(message.stringArguments);
                break;

            case "REMOVEUSERFROMROOM":
                removeUserFromRoom(message.stringArguments);
                break;

            case "SETREADY":
                setReadyInRoom(message.stringArguments);
                break;

            case "DECKSREQUIREDTOJOIN":
                parent.noRoomsForMe();
                break;

            case "JOINPREGAMEROOM":
                processJoinPreGameRoom(message);
                break;

            case "SETROOMSTATE":
                processSetRoomState(message);
                break;

            case "ALREADYINAROOM":
                parent.alreadyInARoom();
                break;

            default: break;
            }
        }
コード例 #14
0
 private void processSetRoomState(Models.ClientMessage message)
 {
     parent.setRoomState(Int32.Parse(message.stringArguments[0]), message.stringArguments[1]);
 }
コード例 #15
0
 public virtual void clientCommandProcessor(Models.ClientMessage message)
 {
 }
コード例 #16
0
 public void send(Models.ClientMessage message)
 {
     com.send(message);
 }
コード例 #17
0
        public Models.Response processDeleteDeck(Models.ClientMessage message)
        {
            db.removeDeck(Int32.Parse(message.stringArguments[0]));

            return(null);
        }
コード例 #18
0
 private void processDeckCreated(Models.ClientMessage message)
 {
     Decks.Add(new Models.CollectionDeck(message.intArguments[0], message.stringArguments[0], new List <Models.CollectionDeckItem>()));
     parent.createNewDeckGUI(message.intArguments[0], message.stringArguments[0]);
 }