X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fstatslist.qc;h=bfa050abdbfed30d803b9f88c57dcb1392af8c60;hb=565754a35f9e84a3b8e6eac08635ec27145b369a;hp=99c850f13558e456d599b2ba333816748431dcba;hpb=1ba59bdc6b1e1ad0368f34dbd297e40cc42be243;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/statslist.qc b/qcsrc/menu/xonotic/statslist.qc index 99c850f13..7d19516cf 100644 --- a/qcsrc/menu/xonotic/statslist.qc +++ b/qcsrc/menu/xonotic/statslist.qc @@ -1,38 +1,10 @@ -#include "../../common/counting.qh" -#include "../../common/playerstats.qh" - -#ifdef INTERFACE -CLASS(XonoticStatsList) EXTENDS(XonoticListBox) - METHOD(XonoticStatsList, configureXonoticStatsList, void(entity)) - ATTRIB(XonoticStatsList, rowsPerItem, float, 1.4) - METHOD(XonoticStatsList, resizeNotify, void(entity, vector, vector, vector, vector)) - METHOD(XonoticStatsList, drawListBoxItem, void(entity, float, vector, float)) - METHOD(XonoticStatsList, getStats, void(entity)) - METHOD(XonoticStatsList, doubleClickListBoxItem, void(entity, float, vector)) - METHOD(XonoticStatsList, keyDown, float(entity, float, float, float)) - METHOD(XonoticStatsList, destroy, void(entity)) - METHOD(XonoticStatsList, showNotify, void(entity)) - - ATTRIB(XonoticStatsList, listStats, float, -1) - ATTRIB(XonoticStatsList, realFontSize, vector, '0 0 0') - ATTRIB(XonoticStatsList, realUpperMargin, float, 0) - ATTRIB(XonoticStatsList, columnNameOrigin, float, 0) - ATTRIB(XonoticStatsList, columnNameSize, float, 0) -ENDCLASS(XonoticStatsList) - -#ifndef IMPLEMENTATION -// public: -entity statslist; // for reference elsewhere -#endif -entity makeXonoticStatsList(); -#endif - -#ifdef IMPLEMENTATION +#include "statslist.qh" +#include entity makeXonoticStatsList() { entity me; - me = spawnXonoticStatsList(); + me = NEW(XonoticStatsList); me.configureXonoticStatsList(me); return me; } @@ -69,17 +41,16 @@ string XonoticStatsList_convertDate(string input) default: return input; // failed, why? } - return sprintf( - "%s %s, %d", - monthname, - count_ordinal(stof(substring(input, 8, 2))), - stof(substring(input, 0, 4)) - ); + string date = ZCTX(_("DATE^%m %d, %Y")); + date = strreplace("%Y", substring(input, 0, 4), date); + date = strreplace("%d", ftos(stof(substring(input, 8, 2))), date); // ftos-stof removes leading 0 + date = strreplace("%m", monthname, date); + return date; } void XonoticStatsList_getStats(entity me) { - dprint("XonoticStatsList_getStats() at time: ", ftos(time), "\n"); + LOG_TRACE("XonoticStatsList_getStats() at time: ", ftos(time)); // delete the old buffer if it exists if(me.listStats >= 0) buf_del(me.listStats); @@ -128,21 +99,21 @@ void XonoticStatsList_getStats(entity me) case "overall/last_seen_dt": { order = 1; - outstr = _("Last_Seen:"); + outstr = _("Last match:"); data = XonoticStatsList_convertDate(car(data)); break; } case "overall/alivetime": { order = 1; - outstr = _("Time_Played:"); + outstr = _("Time played:"); data = process_time(3, stof(data)); break; } case "overall/favorite-map": { order = 2; - outstr = _("Favorite_Map:"); + outstr = _("Favorite map:"); data = car(data); break; } @@ -174,13 +145,13 @@ void XonoticStatsList_getStats(entity me) if((order == -1) && (out_total_matches >= 0) && (out_total_wins >= 0)) { - bufstr_add(me.listStats, sprintf("003Matches: %d", out_total_matches), true); + bufstr_add(me.listStats, sprintf("003%s\n%d", _("Matches:"), out_total_matches), true); if(out_total_matches > 0) // don't show extra info if there are no matches played { out_total_losses = max(0, (out_total_matches - out_total_wins)); - bufstr_add(me.listStats, sprintf("003Wins/Losses: %d/%d", out_total_wins, out_total_losses), true); - bufstr_add(me.listStats, sprintf("004Win_Percentage: %d%%", ((out_total_wins / out_total_matches) * 100)), true); + bufstr_add(me.listStats, sprintf("003%s\n%d/%d", _("Wins/Losses:"), out_total_wins, out_total_losses), true); + bufstr_add(me.listStats, sprintf("004%s\n%d%%", _("Win percentage:"), ((out_total_wins / out_total_matches) * 100)), true); } out_total_matches = -1; @@ -191,13 +162,13 @@ void XonoticStatsList_getStats(entity me) if((order == -1) && (out_total_kills >= 0) && (out_total_deaths >= 0)) { - bufstr_add(me.listStats, sprintf("005Kills/Deaths: %d/%d", out_total_kills, out_total_deaths), true); + bufstr_add(me.listStats, sprintf("005%s\n%d/%d", _("Kills/Deaths:"), out_total_kills, out_total_deaths), true); // if there are no deaths, just show kill count - if(out_total_deaths > 0) - bufstr_add(me.listStats, sprintf("006Kill_Ratio: %.2f", (out_total_kills / out_total_deaths)), true); - else - bufstr_add(me.listStats, sprintf("006Kill_Ratio: %.2f", out_total_kills), true); + if(out_total_deaths == 0) + out_total_deaths = 1; + + bufstr_add(me.listStats, sprintf("006%s\n%.2f", _("Kill ratio:"), (out_total_kills / out_total_deaths)), true); out_total_kills = -1; out_total_deaths = -1; @@ -226,28 +197,27 @@ void XonoticStatsList_getStats(entity me) case "matches": { order = 1; - outstr = sprintf(_("%s_Matches:"), strtoupper(gametype)); - //data = sprintf(_("%d (unranked)"), data); + outstr = _("Matches:"); break; } case "elo": { order = 2; - outstr = sprintf(_("%s_ELO:"), strtoupper(gametype)); + outstr = _("ELO:"); data = sprintf("%d", stof(data)); break; } case "rank": { order = 3; - outstr = sprintf(_("%s_Rank:"), strtoupper(gametype)); + outstr = _("Rank:"); data = sprintf("%d", stof(data)); break; } case "percentile": { order = 4; - outstr = sprintf(_("%s_Percentile:"), strtoupper(gametype)); + outstr = _("Percentile:"); data = sprintf("%d%%", stof(data)); break; } @@ -256,8 +226,7 @@ void XonoticStatsList_getStats(entity me) case "favorite-map": { order = 5; - outstr = sprintf(_("%s_Favorite_Map:"), strtoupper(gametype)); - //data = sprintf(_("%d (unranked)"), data); + outstr = _("Favorite map:"); break; } #endif @@ -265,12 +234,14 @@ void XonoticStatsList_getStats(entity me) default: continue; // nothing to see here } + outstr = strcat(strtoupper(gametype), " ", outstr); // now set up order for sorting later orderstr = sprintf("%2.2s%d", gametype, order); } else if(event == "matches") { - outstr = sprintf(_("%s_Matches:"), strtoupper(gametype)); + outstr = _("Matches:"); + outstr = strcat(strtoupper(gametype), " ", outstr); data = sprintf(_("%d (unranked)"), stof(data)); // unranked game modes ALWAYS get put last @@ -279,7 +250,7 @@ void XonoticStatsList_getStats(entity me) else { continue; } } - bufstr_add(me.listStats, sprintf("%s%s %s", orderstr, outstr, data), true); + bufstr_add(me.listStats, sprintf("%s%s\n%s", orderstr, outstr, data), true); } me.nItems = buf_getsize(me.listStats); @@ -298,8 +269,10 @@ void XonoticStatsList_resizeNotify(entity me, vector relOrigin, vector relSize, me.itemAbsSize = '0 0 0'; SUPER(XonoticStatsList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize); - me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize.y * me.itemHeight)); - me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize.x * (1 - me.controlWidth))); + me.itemAbsSize.y = absSize.y * me.itemHeight; + me.itemAbsSize.x = absSize.x * (1 - me.controlWidth); + me.realFontSize.y = me.fontSize / me.itemAbsSize.y; + me.realFontSize.x = me.fontSize / me.itemAbsSize.x; me.realUpperMargin = 0.5 * (1 - me.realFontSize.y); #if 0 @@ -313,20 +286,22 @@ void XonoticStatsList_resizeNotify(entity me, vector relOrigin, vector relSize, #endif } -void XonoticStatsList_drawListBoxItem(entity me, float i, vector absSize, float isSelected) +void XonoticStatsList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused) { - if(isSelected) - draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED); + if(isFocused) + { + me.focusedItemAlpha = getFadedAlpha(me.focusedItemAlpha, SKINALPHA_LISTBOX_FOCUSED, SKINFADEALPHA_LISTBOX_FOCUSED); + draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_FOCUSED, me.focusedItemAlpha); + } string data = bufstr_get(me.listStats, i); - string s = car(data); - string d = cdr(data); + int ofs = strstrofs(data, "\n", 0); - s = substring(s, 3, strlen(s) - 3); - s = strreplace("_", " ", s); + string s = substring(data, 3, ofs - 3); s = draw_TextShortenToWidth(s, 0.5 * me.columnNameSize, 0, me.realFontSize); draw_Text(me.realUpperMargin * eY + me.columnNameOrigin * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 1); + string d = substring(data, ofs + 1, strlen(data) - (ofs + 1)); d = draw_TextShortenToWidth(d, me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize), 0, me.realFontSize); draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 1 * (me.columnNameSize - draw_TextWidth(d, 0, me.realFontSize))) * eX, d, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 1); } @@ -353,5 +328,3 @@ float XonoticStatsList_keyDown(entity me, float scan, float ascii, float shift) return SUPER(XonoticStatsList).keyDown(me, scan, ascii, shift); } } -#endif -