MCPcopy Create free account
hub / github.com/assaultcube/AC / sicompare

Function sicompare

source/src/serverbrowser.cpp:663–721  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

661}
662
663int sicompare(serverinfo **ap, serverinfo **bp)
664{
665 serverinfo *a = *ap, *b = *bp;
666 int dir = serversortdir ? -1 : 1;
667 if(a->weight > b->weight) return -dir;
668 if(a->weight < b->weight) return dir;
669 enet_uint32 ai = ENET_NET_TO_HOST_32(a->address.host), bi = ENET_NET_TO_HOST_32(b->address.host);
670 int ips = ai < bi ? -dir : (ai > bi ? dir : 0); // most steady base sorting
671 switch(serversort)
672 {
673 case SBS_NUMPL: // player number
674 if(a->numplayers < b->numplayers) return dir;
675 if(a->numplayers > b->numplayers) return -dir;
676 break;
677 case SBS_MAXPL: // maxplayers
678 if(a->maxclients < b->maxclients) return dir;
679 if(a->maxclients > b->maxclients) return -dir;
680 break;
681 case SBS_MINREM: // minutes remaining
682 if(a->minremain < b->minremain) return dir;
683 if(a->minremain > b->minremain) return -dir;
684 break;
685 case SBS_DESC: // description
686 {
687 static string ad, bd;
688 filtertext(ad, a->sdesc, FTXT__SERVDESC);
689 filtertext(bd, b->sdesc, FTXT__SERVDESC);
690 if(!ad[0] && bd[0]) return dir;
691 if(ad[0] && !bd[0]) return -dir;
692 int mdir = dir * strcasecmp(ad, bd);
693 if(mdir) return mdir;
694 break;
695 }
696 case SBS_IP: // IP
697 if(ips) return ips;
698 break;
699 case SBS_MAP: // map
700 {
701 int mdir = dir * strcasecmp(a->map, b->map);
702 if(mdir) return mdir;
703 break;
704 }
705 case SBS_MODE: // mode
706 {
707 const char *am = modestr(a->mode, modeacronyms > 0), *bm = modestr(b->mode, modeacronyms > 0);
708 int mdir = dir * strcasecmp(am, bm);
709 if(mdir) return mdir;
710 break;
711 }
712 }
713 if(serversort == SBS_PING || (!a->numplayers && !b->numplayers)) // ping
714 {
715 if(a->ping > b->ping) return dir;
716 if(a->ping < b->ping) return -dir;
717 }
718 if(ips) return ips;
719 if(a->port > b->port) return dir;
720 else return -dir;

Callers

nothing calls this directly

Calls 2

filtertextFunction · 0.85
modestrFunction · 0.85

Tested by

no test coverage detected