private void Handle_Browse_Lobby_Add_Remove_Message( CBrowseLobbyAddRemoveMessage message ) { if ( message.RemovedLobby != ELobbyID.Invalid ) { Remove_Summary( message.RemovedLobby ); } foreach ( var lobby_summary in message.Lobbies ) { Add_Summary( lobby_summary ); } }
private void Find_Next_Lobby_For( CServerLobbyBrowser browser, ELobbyID removed_lobby, int previous_starting_index ) { EPersistenceID player_id = browser.PlayerID; CBrowseLobbyAddRemoveMessage add_remove_message = new CBrowseLobbyAddRemoveMessage( null, removed_lobby ); if ( browser.WatchedLobbyCount > 0 ) { int new_lobby_index = Get_Sorted_Lobby_Index( browser.LastLobby ) + 1; ELobbyID next_match = Find_New_Lobby( browser, new_lobby_index ); if ( next_match != ELobbyID.Invalid ) { CServerLobby new_lobby = CServerLobbyManager.Instance.Get_Lobby( next_match ); add_remove_message.Add_Summary( new_lobby.Create_Summary() ); Add_As_Watcher( next_match, player_id ); } } else if ( previous_starting_index > 0 ) { // we just lost the last lobby in our visible set; try browsing backwards from the lost lobby in order to pick up some more List< ELobbyID > lobby_list = new List< ELobbyID >(); Build_Backwards_Set_Aux( browser, previous_starting_index, lobby_list ); if ( lobby_list.Count > 0 ) { Browse_Lobby_List( browser, lobby_list ); } lobby_list.Apply( id => add_remove_message.Add_Summary( CServerLobbyManager.Instance.Get_Lobby( id ).Create_Summary() ) ); } CServerMessageRouter.Send_Message_To_Player( add_remove_message, player_id ); }