MCPcopy Create free account
hub / github.com/dhewm/dhewm3 / IsFiltered

Method IsFiltered

neo/framework/async/ServerScan.cpp:509–574  ·  view source on GitHub ↗

================ idServerScan::IsFiltered ================ */

Source from the content-addressed store, hash-verified

507================
508*/
509bool 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 }

Callers

nothing calls this directly

Calls 6

FindKeyMethod · 0.80
GetIntegerMethod · 0.80
HasD3XPMethod · 0.80
IcmpMethod · 0.60
GetValueMethod · 0.45
GetStringMethod · 0.45

Tested by

no test coverage detected