From 6605a20e00cf6808905b606eaaad1a1cc1e45365 Mon Sep 17 00:00:00 2001 From: aurhat Date: Fri, 31 Jul 2015 13:45:03 +0200 Subject: [PATCH] Add a wall clock with local time It uses strftime formatting from "wallclockformat" alias. DOCREF wallclockformat --- config/menus_settings.cfg | 3 +++ source/src/renderhud.cpp | 25 ++++++++++++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/config/menus_settings.cfg b/config/menus_settings.cfg index 0dc3a420..9a20b53c 100644 --- a/config/menus_settings.cfg +++ b/config/menus_settings.cfg @@ -501,6 +501,8 @@ menuitem [] -1 menuitem [Reset to default scoreboard...] [ loop rsl (listlen $DEFAULT_SCOREBOARD_ORDER) [ (at $DEFAULT_SCOREBOARD_ORDER $rsl) (at $DEFAULT_SCOREBOARD_POSITIONS $rsl) ]; refreshcurmenudelayed ] menuitem [Close] [ closecurmenu ] +alias wallclockformat "" // strftime formatting + newmenu HUD menuitem [Show:] -1 @@ -519,6 +521,7 @@ menuitemcheckbox [ Radar ] "(= $hideradar 0)" [ menuitemslider [ Radar zoom: ] 5 500 [ $radarheight ] 5 [][ radarheight $arg1 ] menuitemslider [ Votes: ] 0 2 "$hidevote" 1 ["Always show" "Show until you vote" "Never show"] [ hidevote $arg1 ] menuitemslider [ Graphics statistics: ] 0 2 "$showstats" 1 [None "FPS Only" All] [ showstats $arg1 ] +menuitemslider [ Wall clock: ] 0 2 [findlist ["" %H:%M %H:%M:%S] $wallclockformat] 1 [None HH:MM HH:MM:SS] [ persistidents 1; alias wallclockformat (at ["" %H:%M %H:%M:%S] $arg1); persistidents 0 ] menuitemslider [ Extra messages: ] 0 3 "$hudextras" 1 ["No extra messages" "Show extra messages in console" "Pop up extra messages!" "SPAM EXTRA MESSAGES!"] [ hudextras $arg1 ] menuitemslider [ Hand alignment: ] 0 1 "$righthanded" 1 [Left-handed Right-handed] [ righthanded $arg1 ] menuitemslider [ Max-roll: ] 0 20 "$maxroll" 1 [] [ maxroll $arg1 ] diff --git a/source/src/renderhud.cpp b/source/src/renderhud.cpp index c7cce21d..345b93ce 100644 --- a/source/src/renderhud.cpp +++ b/source/src/renderhud.cpp @@ -837,6 +837,12 @@ void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwat if (!is_spect) r_accuracy(commandh); if(!hideconsole) renderconsole(); formatstring(enginestateinfo)("%d %d %d %d %d", curfps, lod_factor(), nquads, curvert, xtraverts); + + string ltime; + const char *ltimeformat = getalias("wallclockformat"); + bool wallclock = ltimeformat && *ltimeformat; + if(wallclock) formatstring(ltime)("%s", timestring(true, ltimeformat)); + if(showstats) { if(showstats==2 && !dbgpos) @@ -888,7 +894,8 @@ void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwat c_num = xtraverts>3999?(xtraverts>5999?(xtraverts>7999?3:2):1):0; TXTCOLRGB draw_text(c_val, ttll - text_width(c_val), top+320, c_r, c_g, c_b); - if(unsavededits) draw_text("U", ttll - text_width("U"), top - 90); + if(wallclock) draw_text(ltime, ttll - text_width(ltime), top - 90); + if(unsavededits) draw_text("U", ttll - text_width("U"), top - 90 - (wallclock ? 2*FONTH/2 : 0)); } else { @@ -896,22 +903,26 @@ void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwat { pushfont("mono"); defformatstring(o_yw)("%05.2f YAW", player1->yaw); - draw_text(o_yw, VIRTW*2 - ( text_width(o_yw) + FONTH ), VIRTH*2 - 15*FONTH/2); + draw_text(o_yw, VIRTW*2 - ( text_width(o_yw) + FONTH ), VIRTH*2 - 17*FONTH/2); defformatstring(o_p)("%05.2f PIT", player1->pitch); - draw_text(o_p, VIRTW*2 - ( text_width(o_p) + FONTH ), VIRTH*2 - 13*FONTH/2); + draw_text(o_p, VIRTW*2 - ( text_width(o_p) + FONTH ), VIRTH*2 - 15*FONTH/2); defformatstring(o_x)("%05.2f X ", player1->o.x); - draw_text(o_x, VIRTW*2 - ( text_width(o_x) + FONTH ), VIRTH*2 - 11*FONTH/2); + draw_text(o_x, VIRTW*2 - ( text_width(o_x) + FONTH ), VIRTH*2 - 13*FONTH/2); defformatstring(o_y)("%05.2f Y ", player1->o.y); - draw_text(o_y, VIRTW*2 - ( text_width(o_y) + FONTH ), VIRTH*2 - 9*FONTH/2); + draw_text(o_y, VIRTW*2 - ( text_width(o_y) + FONTH ), VIRTH*2 - 11*FONTH/2); defformatstring(o_z)("%05.2f Z ", player1->o.z); - draw_text(o_z, VIRTW*2 - ( text_width(o_z) + FONTH ), VIRTH*2 - 7*FONTH/2); + draw_text(o_z, VIRTW*2 - ( text_width(o_z) + FONTH ), VIRTH*2 - 9*FONTH/2); popfont(); } defformatstring(c_val)("fps %d", curfps); draw_text(c_val, VIRTW*2 - ( text_width(c_val) + FONTH ), VIRTH*2 - 3*FONTH/2); - if(unsavededits) draw_text("U", VIRTW*2 - text_width("U") - FONTH, VIRTH*2 - 5*FONTH/2); + + if(wallclock) draw_text(ltime, VIRTW*2 - text_width(ltime) - FONTH, VIRTH*2 - 5*FONTH/2); + if(unsavededits) draw_text("U", VIRTW*2 - text_width("U") - FONTH, VIRTH*2 - (wallclock ? 7 : 5)*FONTH/2); } } + else if(wallclock) draw_text(ltime, VIRTW*2 - text_width(ltime) - FONTH, VIRTH*2 - 3*FONTH/2); + if(!intermission && lastgametimeupdate!=0) { int cssec = (gametimecurrent+(lastmillis-lastgametimeupdate))/1000;