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

Function assignserverfavourites

source/src/serverbrowser.cpp:903–947  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

901vector<const char *> favcattags;
902
903bool assignserverfavourites()
904{
905 int alxn[FC_NUM];
906 const char *alx[FC_NUM], *sep = " \t\n\r";
907 favcattags.setsize(0);
908 bool res = false;
909 loopv(servers) { servers[i]->favcat = -1; servers[i]->weight = 0; }
910 loopvj(favcats)
911 {
912 loopi(FC_NUM) { alx[i] = getalias(favcatargname(favcats[j], i)); alxn[i] = alx[i] ? atoi(alx[i]) : 0; }
913 favcattags.add(alx[FC_TAG]);
914 bool showonlythiscat = j == showonlyfavourites - 1;
915 char *keys = newstring(alx[FC_KEYS]), *b, *k = strtok_r(keys, sep, &b);
916 while(k)
917 {
918 loopv(servers)
919 {
920 serverinfo &si = *servers[i];
921 if(si.address.host == ENET_HOST_ANY || si.ping == 9999 || si.protocol != PROTOCOL_VERSION) continue;
922 if((!alxn[FC_IGNORE] || showonlythiscat) && favcatcheckkey(si, k))
923 {
924 si.weight += alxn[FC_WEIGHT];
925 res = true;
926 if(si.favcat == -1 || showonlythiscat)
927 {
928 si.favcat = j;
929 if(alxn[FC_ALPHA])
930 {
931 if(!si.bgcolor) si.bgcolor = new color;
932 new (si.bgcolor) color(((float)alxn[FC_RED])/100, ((float)alxn[FC_GREEN])/100, ((float)alxn[FC_BLUE])/100, ((float)alxn[FC_ALPHA])/100);
933 }
934 else DELETEP(si.bgcolor)
935 }
936 }
937 }
938 k = strtok_r(NULL, sep, &b);
939 }
940 delete[] keys;
941 }
942 loopv(servers) if(servers[i]->favcat == -1)
943 {
944 DELETEA(servers[i]->bgcolor);
945 }
946 return res;
947}
948
949COMMAND(addfavcategory, "s");
950COMMAND(listfavcats, "");

Callers 1

refreshserversFunction · 0.85

Calls 2

setsizeMethod · 0.80
loopvFunction · 0.70

Tested by

no test coverage detected