/// <summary> /// Handler for the RequestPlayNow message. /// </summary> /// <param name="netMsg">Network message that was received.</param> protected virtual void OnPlayNowRequested(NetworkMessage netMsg) { var msg = netMsg.ReadMessage <RequestPlayNowMessage>(); if (msg != null) { var game = registeredGameServers.Find(x => string.IsNullOrEmpty(x.password) && x.numPlayers < x.maxPlayers); if (game != null) { var responseMsg = new ResponseJoinGameRoomMessage(); responseMsg.success = true; responseMsg.ip = game.ip; responseMsg.port = game.port; netMsg.conn.Send(GameRoomsNetworkProtocol.ResponseJoinGameRoom, responseMsg); } else { var requestMsg = new RequestCreateGameRoomMessage(); requestMsg.playerConnectionId = netMsg.conn.connectionId; requestMsg.name = "Default game"; requestMsg.maxPlayers = 4; requestMsg.password = null; CreateGameRoom(netMsg.conn, requestMsg); } } }
/// <summary> /// Handler for the RequestJoinGameRoom message. /// </summary> /// <param name="netMsg">Network message that was received.</param> protected virtual void OnJoinGameRoomRequested(NetworkMessage netMsg) { var msg = netMsg.ReadMessage <RequestJoinGameRoomMessage>(); if (msg != null) { var gameServer = registeredGameServers.Find(x => x.id == msg.id); var responseMsg = new ResponseJoinGameRoomMessage(); var success = true; if (gameServer != null) { if (!string.IsNullOrEmpty(gameServer.password)) { if (msg.password != gameServer.password) { success = false; responseMsg.error = JoinGameRoomError.InvalidPassword; } } if (gameServer.numPlayers == gameServer.maxPlayers) { success = false; responseMsg.error = JoinGameRoomError.GameFull; } } else { success = false; responseMsg.error = JoinGameRoomError.GameExpired; } if (success) { responseMsg.ip = gameServer.ip; responseMsg.port = gameServer.port; } responseMsg.success = success; netMsg.conn.Send(GameRoomsNetworkProtocol.ResponseJoinGameRoom, responseMsg); } }