public Models.Response processCreateGameRoom(Socket sender) { Models.Response response = new Models.Response(sender); // if the user that requested to create a game room has any available decks that it may play with if (db.userHasPlayableDecks(lobbyRoomData.getUsernameBySocket(sender))) { User user = lobbyRoomData.getUserBySocket(sender); if (gameRoomData.checkUserAlreadyInRoom(user.Username)) { response.responseCommandToSender = "ALREADYINAROOM"; } else { Models.GameRoom room = gameRoomData.createNewGameRoom(user); response.socketsToNotify = lobbyRoomData.lobbyRoomUsersToSocketList(); response.commandStringArgumentsToSockets = new List <string>() { room.ToString() }; response.responseCommandToSockets = "ADDGAMEROOM"; } } else { response.responseCommandToSender = "DECKSREQUIREDTOJOIN"; } return(response); }
public Models.GameRoom createNewGameRoom(User owner) { lock (gameRoomLock) { Models.GameRoom room = new Models.GameRoom(getFirstRoomIDAvailable(), owner); GameRooms.Add(room); return(room); } }
public Response processSetReady(ClientMessage message, Socket sender) { Response response = new Response(sender); User user; int roomID; user = lobbyRoomData.getUserBySocket(sender); roomID = Int32.Parse(message.stringArguments[0]); if (gameRoomData.setUserReady(user, roomID)) { Models.GameRoom gr = gameRoomData.getRoomByID(roomID); if (gr != null) { // if both players are set to ready they receive permission to start the match if (gr.OwnerIsReady && gr.GuestIsReady) { response.responseCommandToSender = "JOINPREGAMEROOM"; response.responseCommandToSockets = "JOINPREGAMEROOM"; response.commandIntArgumentsToSender.Add(gr.roomID); response.commandIntArgumentsToSockets.Add(gr.roomID); gr.State = "Battle in progress..."; onGoingGamesData.createNewGame(gr.roomID, gr.Owner.Socket, gr.Guest.Socket); if (sender == gr.Owner.Socket) { response.commandStringArgumentsToSender.Add(lobbyRoomData.getNickNameBySocket(gr.Guest.Socket)); response.commandStringArgumentsToSockets.Add(lobbyRoomData.getNickNameBySocket(gr.Owner.Socket)); response.socketsToNotify.Add(gr.Guest.Socket); } else { response.commandStringArgumentsToSender.Add(lobbyRoomData.getNickNameBySocket(gr.Owner.Socket)); response.commandStringArgumentsToSockets.Add(lobbyRoomData.getNickNameBySocket(gr.Guest.Socket)); response.socketsToNotify.Add(gr.Owner.Socket); } } else { // otherwise just notify both players about the one that hit ready response.responseCommandToSockets = "SETREADY"; response.commandIntArgumentsToSockets.Add(roomID); response.commandStringArgumentsToSockets.Add(user.NickName); response.socketsToNotify.Add(gr.Owner.Socket); response.socketsToNotify.Add(gr.Guest.Socket); } } } return(response); }
// creates a room object and its GUI public void createRoom(string roomArguments) { Models.GameRoom room = roomFromArguments(roomArguments); GameRooms.Add(room); parent.AddRoomToGUI(room); }
// adds a new game room to GUI public void AddRoomToGUI(Models.GameRoom room) { Models.GameRoomGUIModel grguim = new Models.GameRoomGUIModel(room, ctrl.userData.NickName, this); listGameRoomsGUI.Add(grguim); stackRooms.Children.Add(grguim.Border); }