#define SLIST_CATEGORY_AUTOCVAR(name) autocvar_menu_slist_categories_##name##_override
#define SLIST_CATEGORY(name,enoverride,dioverride,str) \
- float name; \
+ int name; \
string SLIST_CATEGORY_AUTOCVAR(name) = enoverride;
SLIST_CATEGORIES
#undef SLIST_CATEGORY
SLIST_CATEGORIES
#undef SLIST_CATEGORY
- float i, x, catnum;
+ int i, x, catnum;
string s;
#define PROCESS_OVERRIDE(override_string,override_field) \
}
// Supporting Functions
-entity RetrieveCategoryEnt(float catnum)
+entity RetrieveCategoryEnt(int catnum)
{
if((catnum > 0) && (catnum <= category_ent_count))
{
}
}
-float IsServerInList(string list, string srv)
+bool IsServerInList(string list, string srv)
{
string p;
- float i, n;
+ int i, n;
if(srv == "")
return false;
srv = netaddress_resolve(srv, 26000);
return false;
}
-float CheckCategoryOverride(float cat)
+int CheckCategoryOverride(int cat)
{
entity catent = RetrieveCategoryEnt(cat);
if(catent)
{
- float override = (autocvar_menu_slist_categories ? catent.cat_enoverride : catent.cat_dioverride);
+ int override = (autocvar_menu_slist_categories ? catent.cat_enoverride : catent.cat_dioverride);
if(override) { return override; }
else { return cat; }
}
}
}
-float CheckCategoryForEntry(float entry)
+int CheckCategoryForEntry(int entry)
{
string s, k, v, modtype = "";
- float j, m, impure = 0, freeslots = 0, sflags = 0;
+ int j, m, impure = 0, freeslots = 0, sflags = 0;
s = gethostcachestring(SLIST_FIELD_QCSTATUS, entry);
m = tokenizebyseparator(s, ":");
void XonoticServerList_toggleFavorite(entity me, string srv)
{
string s, s0, s1, s2, srv_resolved, p;
- float i, n, f;
+ int i, n;
+ bool f = false;
srv_resolved = netaddress_resolve(srv, 26000);
p = crypto_getidfp(srv_resolved);
s = cvar_string("net_slist_favorites");
n = tokenize_console(s);
- f = 0;
for(i = 0; i < n; ++i)
{
if(substring(argv(i), 0, 1) != "[" && strlen(argv(i)) == 44 && strstrofs(argv(i), ".", 0) < 0)
cvar_set("net_slist_favorites", strcat(s0, s1, s2));
s = cvar_string("net_slist_favorites");
n = tokenize_console(s);
- f = 1;
+ f = true;
--i;
}
// clear list
me.nItems = 0;
}
-void XonoticServerList_setSelected(entity me, float i)
+void XonoticServerList_setSelected(entity me, int i)
{
- float save;
- save = me.selectedItem;
+ //int save = me.selectedItem;
SUPER(XonoticServerList).setSelected(me, i);
/*
if(me.selectedItem == save)
me.ipAddressBox.cursorPos = strlen(me.selectedServer);
me.ipAddressBoxFocused = -1;
}
-void XonoticServerList_refreshServerList(entity me, float mode)
+void XonoticServerList_refreshServerList(entity me, int mode)
{
//print("refresh of type ", ftos(mode), "\n");
if(mode >= REFRESHSERVERLIST_REFILTER)
{
- float m, i, n;
- float listflags = 0;
+ float m;
+ int i, n;
+ int listflags = 0;
string s, typestr, modstr;
s = me.filterString;
void XonoticServerList_draw(entity me)
{
- float i, found, owned;
+ int i;
+ bool found = false, owned;
if(_Nex_ExtResponseSystem_BannedServersNeedsRefresh)
{
me.infoButton.disabled = ((me.nItems == 0) || !owned);
me.favoriteButton.disabled = ((me.nItems == 0) && (me.ipAddressBox.text == ""));
- found = 0;
if(me.selectedServer)
{
for(i = 0; i < me.nItems; ++i)
if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
{
me.selectedItem = i;
- found = 1;
+ found = true;
break;
}
}
me.ipAddressBox.cursorPos = 0;
me.ipAddressBoxFocused = -1;
}
-void XonoticServerList_setSortOrder(entity me, float fld, float direction)
+void XonoticServerList_setSortOrder(entity me, int fld, int direction)
{
if(me.currentSortField == fld)
direction = -me.currentSortOrder;
me.positionSortButton(me, me.sortButton4, me.columnTypeOrigin, me.columnTypeSize, _("Type"), ServerList_TypeSort_Click);
me.positionSortButton(me, me.sortButton5, me.columnPlayersOrigin, me.columnPlayersSize, _("Players"), ServerList_PlayerSort_Click);
- float f;
- f = me.currentSortField;
+ int f = me.currentSortField;
if(f >= 0)
{
me.currentSortField = -1;
vector sz = boxToGlobalSize(eY * me.itemHeight + eX * (1 - me.controlWidth), me.size);
DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
}
-void XonoticServerList_doubleClickListBoxItem(entity me, float i, vector where)
+void XonoticServerList_doubleClickListBoxItem(entity me, int i, vector where)
{
ServerList_Connect_Click(NULL, me);
}
-void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float isSelected)
+void XonoticServerList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected)
{
// layout: Ping, Server name, Map name, NP, TP, MP
- float p, q;
- float isv4, isv6;
+ float p;
+ int q;
+ bool isv4, isv6;
vector theColor;
float theAlpha;
- float m, pure, freeslots, j, sflags;
+ bool pure = false;
+ int freeslots = -1, sflags = -1, j, m;
string s, typestr, versionstr, k, v, modname;
//printf("time: %f, i: %d, item: %d, nitems: %d\n", time, i, item, me.nItems);
versionstr = argv(1);
}
freeslots = -1;
- sflags = -1;
modname = "";
- pure = 0;
for(j = 2; j < m; ++j)
{
if(argv(j) == "")
k = substring(argv(j), 0, 1);
v = substring(argv(j), 1, -1);
if(k == "P")
- pure = stof(v);
+ pure = stob(v);
else if(k == "S")
freeslots = stof(v);
else if(k == "F")
- sflags = stof(v);
+ sflags = stoi(v);
else if(k == "M")
modname = v;
}
if(modname != "CTS")
if(modname != "NIX")
if(modname != "NewToys")
- pure = 0;
+ pure = false;
if(gethostcachenumber(SLIST_FIELD_FREESLOTS, i) <= 0)
theAlpha = SKINALPHA_SERVERLIST_FULL;
theAlpha = 1;
p = gethostcachenumber(SLIST_FIELD_PING, i);
- const float PING_LOW = 75;
- const float PING_MED = 200;
- const float PING_HIGH = 500;
+ const int PING_LOW = 75;
+ const int PING_MED = 200;
+ const int PING_HIGH = 500;
if(p < PING_LOW)
theColor = SKINCOLOR_SERVERLIST_LOWPING + (SKINCOLOR_SERVERLIST_MEDPING - SKINCOLOR_SERVERLIST_LOWPING) * (p / PING_LOW);
else if(p < PING_MED)
s = gethostcachestring(SLIST_FIELD_CNAME, i);
- isv4 = isv6 = 0;
+ isv4 = isv6 = false;
if(substring(s, 0, 1) == "[")
{
- isv6 = 1;
+ isv6 = true;
me.seenIPv6 += 1;
}
else if(strstrofs("0123456789", substring(s, 0, 1), 0) >= 0)
{
- isv4 = 1;
+ isv4 = true;
me.seenIPv4 += 1;
}
draw_Text(me.realUpperMargin * eY + (me.columnPlayersOrigin + (me.columnPlayersSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, theColor, theAlpha, 0);
}
-float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift)
+bool XonoticServerList_keyDown(entity me, int scan, bool ascii, bool shift)
{
vector org, sz;
if(scan == K_ENTER || scan == K_KP_ENTER)
{
ServerList_Connect_Click(NULL, me);
- return 1;
+ return true;
}
else if(scan == K_MOUSE2 || scan == K_SPACE)
{
m_play_click_sound(MENU_SOUND_OPEN);
main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
- return 1;
+ return true;
}
- return 0;
+ return false;
}
else if(scan == K_INS || scan == K_MOUSE3 || scan == K_KP_INS)
{
{
me.toggleFavorite(me, me.selectedServer);
me.ipAddressBoxFocused = -1;
- return 1;
+ return true;
}
- return 0;
+ return false;
}
else if(SUPER(XonoticServerList).keyDown(me, scan, ascii, shift))
- return 1;
+ return true;
else if(!me.controlledTextbox)
- return 0;
+ return false;
else
return me.controlledTextbox.keyDown(me.controlledTextbox, scan, ascii, shift);
}
-float XonoticServerList_getTotalHeight(entity me) {
+float XonoticServerList_getTotalHeight(entity me)
+{
float num_normal_rows = me.nItems;
- float num_headers = category_draw_count;
+ int num_headers = category_draw_count;
return me.itemHeight * (num_normal_rows + me.categoriesHeight * num_headers);
}
-float XonoticServerList_getItemAtPos(entity me, float pos) {
+int XonoticServerList_getItemAtPos(entity me, float pos)
+{
pos = pos / me.itemHeight;
- float i;
+ int i;
for (i = category_draw_count - 1; i >= 0; --i) {
- float itemidx = category_item[i];
+ int itemidx = category_item[i];
float itempos = i * me.categoriesHeight + category_item[i];
if (pos >= itempos + me.categoriesHeight + 1)
return itemidx + 1 + floor(pos - (itempos + me.categoriesHeight + 1));
// No category matches? Note that category 0 is... 0. Therefore no headings exist at all.
return floor(pos);
}
-float XonoticServerList_getItemStart(entity me, float item) {
- float i;
+float XonoticServerList_getItemStart(entity me, int item)
+{
+ int i;
for (i = category_draw_count - 1; i >= 0; --i) {
- float itemidx = category_item[i];
+ int itemidx = category_item[i];
float itempos = i * me.categoriesHeight + category_item[i];
if (item >= itemidx + 1)
return (itempos + me.categoriesHeight + 1 + item - (itemidx + 1)) * me.itemHeight;
// No category matches? Note that category 0 is... 0. Therefore no headings exist at all.
return item * me.itemHeight;
}
-float XonoticServerList_getItemHeight(entity me, float item) {
- float i;
+float XonoticServerList_getItemHeight(entity me, int item)
+{
+ int i;
for (i = 0; i < category_draw_count; ++i) {
// Matches exactly the headings with increased height.
if (item == category_item[i])