// Construction
        public CServerLobbyBrowser( EPersistenceID player_id, CBrowseLobbyMatchCriteria browse_criteria, bool join_first_available )
        {
            PlayerID = player_id;

            WatchStartInterval = ELobbyID.Invalid;
            WatchEndInterval = ELobbyID.Invalid;

            BrowseCriteria = browse_criteria;

            JoinFirstAvailable = join_first_available;
        }
        public bool Matches_Browse_Criteria( CBrowseLobbyMatchCriteria browse_criteria )
        {
            if ( ( browse_criteria.GameModeMask & LobbyState.GameMode ) == 0 )
            {
                return false;
            }

            ELobbyMemberType current_mask = 0;
            if ( LobbyState.PlayerCount < LobbyState.MaxPlayers )
            {
                current_mask |= ELobbyMemberType.Player;
            }

            if ( LobbyState.AllowObservers )
            {
                current_mask |= ELobbyMemberType.Observer;
            }

            if ( ( browse_criteria.LobbyMemberTypeMask & current_mask ) == 0 )
            {
                return false;
            }

            return true;
        }
 // Construction
 public CStartBrowseLobbyRequest( EGameModeType game_mode_mask, ELobbyMemberType member_type_mask, bool join_first_available )
     : base()
 {
     BrowseCriteria = new CBrowseLobbyMatchCriteria( game_mode_mask, member_type_mask );
     JoinFirstAvailable = join_first_available;
 }