================ idServerScan::IsFiltered ================ */
| 507 | ================ |
| 508 | */ |
| 509 | bool idServerScan::IsFiltered( const networkServer_t server ) { |
| 510 | int i; |
| 511 | const idKeyValue *keyval; |
| 512 | |
| 513 | // password filter |
| 514 | keyval = server.serverInfo.FindKey( "si_usePass" ); |
| 515 | if ( keyval && gui_filter_password.GetInteger() == 1 ) { |
| 516 | // show passworded only |
| 517 | if ( keyval->GetValue()[ 0 ] == '0' ) { |
| 518 | return true; |
| 519 | } |
| 520 | } else if ( keyval && gui_filter_password.GetInteger() == 2 ) { |
| 521 | // show no password only |
| 522 | if ( keyval->GetValue()[ 0 ] != '0' ) { |
| 523 | return true; |
| 524 | } |
| 525 | } |
| 526 | // players filter |
| 527 | keyval = server.serverInfo.FindKey( "si_maxPlayers" ); |
| 528 | if ( keyval ) { |
| 529 | if ( gui_filter_players.GetInteger() == 1 && server.clients == atoi( keyval->GetValue() ) ) { |
| 530 | return true; |
| 531 | } else if ( gui_filter_players.GetInteger() == 2 && ( !server.clients || server.clients == atoi( keyval->GetValue() ) ) ) { |
| 532 | return true; |
| 533 | } |
| 534 | } |
| 535 | // gametype filter |
| 536 | keyval = server.serverInfo.FindKey( "si_gameType" ); |
| 537 | if ( keyval && gui_filter_gameType.GetInteger() ) { |
| 538 | i = 0; |
| 539 | while ( l_gameTypes[ i ] ) { |
| 540 | if ( !keyval->GetValue().Icmp( l_gameTypes[ i ] ) ) { |
| 541 | break; |
| 542 | } |
| 543 | i++; |
| 544 | } |
| 545 | if ( l_gameTypes[ i ] && i != gui_filter_gameType.GetInteger() -1 ) { |
| 546 | return true; |
| 547 | } |
| 548 | } |
| 549 | // idle server filter |
| 550 | keyval = server.serverInfo.FindKey( "si_idleServer" ); |
| 551 | if ( keyval && !gui_filter_idle.GetInteger() ) { |
| 552 | if ( !keyval->GetValue().Icmp( "1" ) ) { |
| 553 | return true; |
| 554 | } |
| 555 | } |
| 556 | |
| 557 | // autofilter D3XP games if the user does not has the XP installed |
| 558 | if(!fileSystem->HasD3XP() && !idStr::Icmp(server.serverInfo.GetString( "fs_game" ), "d3xp")) { |
| 559 | return true; |
| 560 | } |
| 561 | |
| 562 | // filter based on the game doom or XP |
| 563 | if(gui_filter_game.GetInteger() == 1) { //Only Doom |
| 564 | if(idStr::Icmp(server.serverInfo.GetString("fs_game"), "")) { |
| 565 | return true; |
| 566 | } |