- int result; // > 0 if for numbers A > B and for text if A < B
-
- if( hostcache_sortbyfield == HCIF_PING )
- result = A->info.ping - B->info.ping;
- else if( hostcache_sortbyfield == HCIF_MAXPLAYERS )
- result = A->info.maxplayers - B->info.maxplayers;
- else if( hostcache_sortbyfield == HCIF_NUMPLAYERS )
- result = A->info.numplayers - B->info.numplayers;
- else if( hostcache_sortbyfield == HCIF_PROTOCOL )
- result = A->info.protocol - B->info.protocol;
- else if( hostcache_sortbyfield == HCIF_CNAME )
- result = strcmp( B->info.cname, A->info.cname );
- else if( hostcache_sortbyfield == HCIF_GAME )
- result = strcmp( B->info.game, A->info.game );
- else if( hostcache_sortbyfield == HCIF_MAP )
- result = strcmp( B->info.map, A->info.map );
- else if( hostcache_sortbyfield == HCIF_MOD )
- result = strcmp( B->info.mod, A->info.mod );
- else if( hostcache_sortbyfield == HCIF_NAME )
- result = strcmp( B->info.name, A->info.name );
-
- if( hostcache_sortdescending )
+ int result = 0; // > 0 if for numbers A > B and for text if A < B
+
+ switch( serverlist_sortbyfield ) {
+ case SLIF_PING:
+ result = A->info.ping - B->info.ping;
+ break;
+ case SLIF_MAXPLAYERS:
+ result = A->info.maxplayers - B->info.maxplayers;
+ break;
+ case SLIF_NUMPLAYERS:
+ result = A->info.numplayers - B->info.numplayers;
+ break;
+ case SLIF_PROTOCOL:
+ result = A->info.protocol - B->info.protocol;
+ break;
+ case SLIF_CNAME:
+ result = strcmp( B->info.cname, A->info.cname );
+ break;
+ case SLIF_GAME:
+ result = strcmp( B->info.game, A->info.game );
+ break;
+ case SLIF_MAP:
+ result = strcmp( B->info.map, A->info.map );
+ break;
+ case SLIF_MOD:
+ result = strcmp( B->info.mod, A->info.mod );
+ break;
+ case SLIF_NAME:
+ result = strcmp( B->info.name, A->info.name );
+ break;
+ default:
+ Con_DPrint( "_ServerList_Entry_Compare: Bad serverlist_sortbyfield!\n" );
+ break;
+ }
+
+ if( serverlist_sortdescending )