From f4d6d011679af38d770c6e498a0df9fe86b37d4c Mon Sep 17 00:00:00 2001 From: Mario Date: Fri, 24 Apr 2015 22:02:12 +1000 Subject: [PATCH] Fix a few more floats, add the long awaited stob macro --- qcsrc/common/util-pre.qh | 1 + qcsrc/menu/item/textslider.qc | 10 +-- qcsrc/menu/xonotic/serverlist.qc | 119 ++++++++++++++++--------------- 3 files changed, 67 insertions(+), 63 deletions(-) diff --git a/qcsrc/common/util-pre.qh b/qcsrc/common/util-pre.qh index ed4ebcf06..022f68721 100644 --- a/qcsrc/common/util-pre.qh +++ b/qcsrc/common/util-pre.qh @@ -21,6 +21,7 @@ #define int float #define stoi(s) stof(s) + #define stob(s) stof(s) #define itos(s) ftos(s) #endif diff --git a/qcsrc/menu/item/textslider.qc b/qcsrc/menu/item/textslider.qc index 59d8c10db..6e9d65efa 100644 --- a/qcsrc/menu/item/textslider.qc +++ b/qcsrc/menu/item/textslider.qc @@ -17,7 +17,7 @@ ENDCLASS(TextSlider) #endif #ifdef IMPLEMENTATION -string TextSlider_valueToIdentifier(entity me, float val) +string TextSlider_valueToIdentifier(entity me, int val) { if(val >= me.nValues) return "custom"; @@ -25,7 +25,7 @@ string TextSlider_valueToIdentifier(entity me, float val) return "custom"; return me.(valueIdentifiers[val]); } -string TextSlider_valueToText(entity me, float val) +string TextSlider_valueToText(entity me, int val) { if(val >= me.nValues) return _("Custom"); @@ -35,7 +35,7 @@ string TextSlider_valueToText(entity me, float val) } void TextSlider_setValueFromIdentifier(entity me, string id) { - float i; + int i; for(i = 0; i < me.nValues; ++i) if(me.valueToIdentifier(me, i) == id) { @@ -58,9 +58,9 @@ void TextSlider_addValue(entity me, string theString, string theIdentifier) me.(valueIdentifiers[me.nValues]) = theIdentifier; me.nValues += 1; } -void TextSlider_insertValue(entity me, float pos, string theString, string theIdentifier) +void TextSlider_insertValue(entity me, int pos, string theString, string theIdentifier) { - float i; + int i; for (i = me.nValues; i > pos; --i) { me.(valueStrings[i]) = me.(valueStrings[i-1]); diff --git a/qcsrc/menu/xonotic/serverlist.qc b/qcsrc/menu/xonotic/serverlist.qc index c6c53cc8e..db7ac8481 100644 --- a/qcsrc/menu/xonotic/serverlist.qc +++ b/qcsrc/menu/xonotic/serverlist.qc @@ -155,7 +155,7 @@ float category_draw_count; #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 @@ -180,7 +180,7 @@ void RegisterSLCategories() SLIST_CATEGORIES #undef SLIST_CATEGORY - float i, x, catnum; + int i, x, catnum; string s; #define PROCESS_OVERRIDE(override_string,override_field) \ @@ -219,7 +219,7 @@ void RegisterSLCategories() } // Supporting Functions -entity RetrieveCategoryEnt(float catnum) +entity RetrieveCategoryEnt(int catnum) { if((catnum > 0) && (catnum <= category_ent_count)) { @@ -232,10 +232,10 @@ entity RetrieveCategoryEnt(float catnum) } } -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); @@ -260,12 +260,12 @@ float IsServerInList(string list, string srv) 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; } } @@ -276,10 +276,10 @@ float CheckCategoryOverride(float 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, ":"); @@ -381,12 +381,12 @@ float CheckCategoryForEntry(float entry) 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) @@ -410,7 +410,7 @@ void XonoticServerList_toggleFavorite(entity me, string srv) cvar_set("net_slist_favorites", strcat(s0, s1, s2)); s = cvar_string("net_slist_favorites"); n = tokenize_console(s); - f = 1; + f = true; --i; } @@ -456,10 +456,9 @@ void XonoticServerList_configureXonoticServerList(entity me) // 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) @@ -478,14 +477,15 @@ void XonoticServerList_setSelected(entity me, float i) 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; @@ -573,7 +573,8 @@ void XonoticServerList_focusEnter(entity me) void XonoticServerList_draw(entity me) { - float i, found, owned; + int i; + bool found = false, owned; if(_Nex_ExtResponseSystem_BannedServersNeedsRefresh) { @@ -714,7 +715,6 @@ void XonoticServerList_draw(entity me) 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) @@ -722,7 +722,7 @@ void XonoticServerList_draw(entity me) if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer) { me.selectedItem = i; - found = 1; + found = true; break; } } @@ -861,7 +861,7 @@ void ServerList_ShowFull_Click(entity box, entity me) 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; @@ -922,8 +922,7 @@ void XonoticServerList_resizeNotify(entity me, vector relOrigin, vector relSize, 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; @@ -958,18 +957,20 @@ void ServerList_Info_Click(entity btn, entity me) 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); @@ -1026,9 +1027,7 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float versionstr = argv(1); } freeslots = -1; - sflags = -1; modname = ""; - pure = 0; for(j = 2; j < m; ++j) { if(argv(j) == "") @@ -1036,11 +1035,11 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float 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; } @@ -1064,7 +1063,7 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float if(modname != "CTS") if(modname != "NIX") if(modname != "NewToys") - pure = 0; + pure = false; if(gethostcachenumber(SLIST_FIELD_FREESLOTS, i) <= 0) theAlpha = SKINALPHA_SERVERLIST_FULL; @@ -1076,9 +1075,9 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float 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) @@ -1102,15 +1101,15 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float 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; } @@ -1231,7 +1230,7 @@ void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float 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; @@ -1241,7 +1240,7 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift) 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) { @@ -1250,9 +1249,9 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift) 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) { @@ -1260,28 +1259,30 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift) { 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)); @@ -1291,10 +1292,11 @@ float XonoticServerList_getItemAtPos(entity me, float pos) { // 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; @@ -1304,8 +1306,9 @@ float XonoticServerList_getItemStart(entity me, float item) { // 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]) -- 2.39.2