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

Function refreshservers

source/src/serverbrowser.cpp:955–1167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

953static bool pinglastselected = false;
954
955void refreshservers(void *menu, bool init)
956{
957 static int servermenumillis;
958 static bool usedselect = false;
959 static string title;
960 bool issearch = menu == searchmenu;
961 bool isinfo = menu == serverinfomenu;
962 bool isscoreboard = menu == NULL;
963
964 serverinfo *curserver = getconnectedserverinfo(), *oldsel = NULL;
965 if(init)
966 {
967 loopi(PINGBUFSIZE) if(pingbuf[i] < totalmillis) pingbuf[i] = 0;
968 if(resolverthreads.empty()) resolverinit();
969 else resolverclear();
970 loopv(servers) resolverquery(servers[i]->name);
971 servermenumillis = totalmillis;
972 usedselect = false;
973 if(menu && curserver) oldsel = curserver;
974 }
975
976 checkresolver();
977 checkpings();
978 if(isinfo)
979 {
980 if(lastselectedserver)
981 {
982 bool found = false;
983 loopv(servers) if(lastselectedserver == servers[i]) { found = true; break; }
984 if(!found) lastselectedserver = NULL;
985 }
986 menureset(menu);
987 static string infotext;
988 static char dummy = '\0';
989 if(lastselectedserver)
990 {
991 serverinfo &si = *lastselectedserver;
992 formatstring(si.full)("%s:%d %s", si.name, si.port, si.sdesc);
993 menuitemmanual(menu, si.full);
994 menuitemmanual(menu, &dummy);
995 if(si.infotexts.length() && !pinglastselected)
996 {
997 infotext[0] = '\0';
998 loopv(si.infotexts) menuimagemanual(menu, NULL, "bargraphs", si.infotexts[i]);
999 }
1000 else
1001 {
1002 copystring(infotext, "-- waiting for server response --");
1003 if(si.getinfo == EXTPING_NOP) si.getinfo = EXTPING_SERVERINFO;
1004 if(init || pinglastselected || totalmillis - lastinfo >= servpingrate) pingservers(false, lastselectedserver);
1005 pinglastselected = false;
1006 }
1007 }
1008 else
1009 copystring(infotext, " -- no server selected --");
1010 if(*infotext) menuitemmanual(menu, infotext);
1011 return;
1012 }

Callers 1

renderscoresFunction · 0.85

Calls 15

getconnectedserverinfoFunction · 0.85
resolverinitFunction · 0.85
resolverclearFunction · 0.85
resolverqueryFunction · 0.85
checkresolverFunction · 0.85
checkpingsFunction · 0.85
menuresetFunction · 0.85
menuitemmanualFunction · 0.85
menuimagemanualFunction · 0.85
copystringFunction · 0.85
pingserversFunction · 0.85
maxFunction · 0.85

Tested by

no test coverage detected