private static void Build_Browse_Lobby_Message_Samples( List< CNetworkMessage > message_list ) { message_list.Add( new CStartBrowseLobbyRequest( EGameModeType.Two_Players, ELobbyMemberType.Player, true ) ); CLobbyConfig lobby_config = new CLobbyConfig(); lobby_config.Initialize( "Pimps", EGameModeType.Two_Players, false, "BigPimpin" ); CStartBrowseLobbyResponse browse_response = new CStartBrowseLobbyResponse( EMessageRequestID.Invalid, EStartBrowseResult.Success ); for ( int i = 0; i < 10; i++ ) { CLobbySummary lobby_summary = new CLobbySummary(); lobby_summary.Initialize( ELobbyID.Invalid, lobby_config, DateTime.Now, EPersistenceID.Invalid, 2, 2 ); browse_response.Add_Summary( lobby_summary ); } message_list.Add( browse_response ); message_list.Add( new CEndBrowseLobbyMessage() ); message_list.Add( new CBrowseNextLobbySetRequest() ); message_list.Add( new CBrowsePreviousLobbySetRequest() ); CCursorBrowseLobbyResponse cursor_response = new CCursorBrowseLobbyResponse( EMessageRequestID.Invalid, ECursorBrowseResult.Success ); for ( int i = 0; i < 10; i++ ) { CLobbySummary lobby_summary = new CLobbySummary(); lobby_summary.Initialize( ELobbyID.Invalid, lobby_config, DateTime.Now, EPersistenceID.Invalid, 2, 2 ); cursor_response.Add_Summary( lobby_summary ); } message_list.Add( cursor_response ); CLobbySummary summary = new CLobbySummary(); summary.Initialize( ELobbyID.Invalid, lobby_config, DateTime.Now, EPersistenceID.Invalid, 1, 4 ); message_list.Add( new CBrowseLobbyAddRemoveMessage( summary, ELobbyID.Invalid ) ); CLobbySummaryDelta summary_delta = new CLobbySummaryDelta(); summary_delta.Initialize( ELobbyID.Invalid, 4, 1 ); message_list.Add( new CBrowseLobbyDeltaMessage( summary_delta ) ); }
private void Handle_Start_Browse_Lobby_Request( CStartBrowseLobbyRequest request, EPersistenceID player_id ) { CConnectedPlayer player = CConnectedPlayerManager.Instance.Get_Active_Player_By_Persistence_ID( player_id ); if ( player == null ) { return; } if ( !player.State_Allows_Operation( EConnectedPlayerOperation.Browse_Lobbies ) ) { CServerMessageRouter.Send_Message_To_Player( new CStartBrowseLobbyResponse( request.RequestID, EStartBrowseResult.Invalid_State ), player_id ); return; } CLog.Log( ELoggingChannel.Lobby, ELogLevel.Medium, String.Format( "Player {0} requesting to start browsing lobbies.", CConnectedPlayerManager.Get_Player_Log_Name( player_id ) ) ); Stop_Browsing( player_id ); CServerLobbyBrowser browser = new CServerLobbyBrowser( player_id, request.BrowseCriteria, request.JoinFirstAvailable ); m_Browsers.Add( player_id, browser ); Browse_Forwards( browser, 0 ); if ( browser.Has_Matches() && request.JoinFirstAvailable ) { ELobbyID lobby_id = browser.WatchedLobbies.First(); Stop_Browsing( player_id ); CServerMessageRouter.Send_Message_To_Player( new CStartBrowseLobbyResponse( request.RequestID, EStartBrowseResult.AutoJoined ), player_id ); CServerLobbyManager.Instance.Join_Lobby_By_Browsing( player_id, lobby_id ); return; } // send initial lobby set CStartBrowseLobbyResponse response = new CStartBrowseLobbyResponse( request.RequestID, EStartBrowseResult.Success ); browser.WatchedLobbies.Apply( lobby_id => response.Add_Summary( Build_Summary( lobby_id ) ) ); CServerMessageRouter.Send_Message_To_Player( response, player_id ); }