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_Browse_Previous_Lobby_Set_Request( CBrowsePreviousLobbySetRequest request, EPersistenceID player_id ) { if ( !Is_Browsing( player_id ) ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.Not_Browsing ), player_id ); return; } CServerLobbyBrowser browser = Get_Browser( player_id ); if ( browser.WatchedLobbyCount == 0 ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.End_Of_Cursor ), player_id ); return; } ELobbyID first_watched_lobby_id = browser.FirstLobby; int first_index = Get_Sorted_Lobby_Index( first_watched_lobby_id ); bool new_lobbies = Browse_Backwards( browser, first_index ); if ( !new_lobbies ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.End_Of_Cursor ), player_id ); return; } CCursorBrowseLobbyResponse response = new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.Success ); browser.WatchedLobbies.Apply( lobby_id => response.Add_Summary( Build_Summary( lobby_id ) ) ); CServerMessageRouter.Send_Message_To_Player( response, player_id ); }
private void Handle_Cursor_Browse_Lobby_Response( CCursorBrowseLobbyResponse response ) { switch ( response.Result ) { case ECursorBrowseResult.Not_Browsing: CClientResource.Output_Text< EClientTextID >( EClientTextID.Client_Browse_Cursor_Not_Browsing ); break; case ECursorBrowseResult.End_Of_Cursor: break; case ECursorBrowseResult.Success: Clear_Lobbies(); response.LobbySummaries.Apply( summary => Add_Summary( summary ) ); break; } State = EClientBrowseState.Browse_Idle; }
private void Handle_Browse_Next_Lobby_Set_Request( CBrowseNextLobbySetRequest request, EPersistenceID player_id ) { if ( !Is_Browsing( player_id ) ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.Not_Browsing ), player_id ); return; } CServerLobbyBrowser browser = Get_Browser( player_id ); if ( browser.WatchedLobbyCount < MAX_WATCHED_LOBBIES ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.End_Of_Cursor ), player_id ); return; } ELobbyID last_watched_lobby_id = browser.LastLobby; int last_index = Get_Sorted_Lobby_Index( last_watched_lobby_id ); bool new_lobbies = Browse_Forwards( browser, last_index + 1 ); if ( !new_lobbies ) { CServerMessageRouter.Send_Message_To_Player( new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.End_Of_Cursor ), player_id ); return; } CCursorBrowseLobbyResponse response = new CCursorBrowseLobbyResponse( request.RequestID, ECursorBrowseResult.Success ); browser.WatchedLobbies.Apply( lobby_id => response.Add_Summary( Build_Summary( lobby_id ) ) ); CServerMessageRouter.Send_Message_To_Player( response, player_id ); }