}
-#define OPTIONS_ITEMS 34
+#define OPTIONS_ITEMS 36
int options_cursor;
Cvar_SetValueQuick (&crosshair_static, !crosshair_static.integer);
else if (options_cursor == optnum++)
Cvar_SetValueQuick (&showfps, !showfps.integer);
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&showtime, !showtime.integer);
+ else if (options_cursor == optnum++)
+ Cvar_SetValueQuick (&showdate, !showdate.integer);
else if (options_cursor == optnum++)
{
if (cl_forwardspeed.value > 200)
M_Options_PrintSlider( " Crosshair Size", true, crosshair_size.value, 1, 5);
M_Options_PrintCheckbox(" Static Crosshair", true, crosshair_static.integer);
M_Options_PrintCheckbox(" Show Framerate", true, showfps.integer);
+ M_Options_PrintCheckbox(" Show Time", true, showtime.integer);
+ M_Options_PrintCheckbox(" Show Date", true, showdate.integer);
M_Options_PrintCheckbox(" Always Run", true, cl_forwardspeed.value > 200);
M_Options_PrintCheckbox(" Lookspring", true, lookspring.integer);
M_Options_PrintCheckbox(" Lookstrafe", true, lookstrafe.integer);
sbarpic_t *somsb_armor[3];
cvar_t showfps = {CVAR_SAVE, "showfps", "0"};
+cvar_t showtime = {CVAR_SAVE, "showtime", "0"};
+cvar_t showtime_format = {CVAR_SAVE, "showtime_format", "%H:%M:%S"};
+cvar_t showdate = {CVAR_SAVE, "showdate", "0"};
+cvar_t showdate_format = {CVAR_SAVE, "showdate_format", "%Y-%m-%d"};
cvar_t sbar_alpha = {CVAR_SAVE, "sbar_alpha", "1"};
void Sbar_MiniDeathmatchOverlay (int x, int y);
Cmd_AddCommand ("+showscores", Sbar_ShowScores);
Cmd_AddCommand ("-showscores", Sbar_DontShowScores);
Cvar_RegisterVariable (&showfps);
+ Cvar_RegisterVariable (&showtime);
+ Cvar_RegisterVariable (&showtime_format);
+ Cvar_RegisterVariable (&showdate);
+ Cvar_RegisterVariable (&showdate_format);
Cvar_RegisterVariable (&sbar_alpha);
R_RegisterModule("sbar", sbar_start, sbar_shutdown, sbar_newmap);
void Sbar_ShowFPS(void)
{
+ float fps_x, fps_y, fps_scalex, fps_scaley, fps_height;
+ char fpsstring[32];
+ char timestring[32];
+ char datestring[32];
+ fpsstring[0] = 0;
+ timestring[0] = 0;
+ datestring[0] = 0;
if (showfps.integer)
{
int calc;
- char temp[32];
- float fps_x, fps_y, fps_scalex, fps_scaley;
if (showfps.integer > 1)
{
static double currtime, frametimes[32];
}
calc = framerate;
}
- sprintf(temp, "%4i", calc);
+ snprintf(fpsstring, sizeof(fpsstring), "%4i fps", calc);
+ }
+ if (showtime.integer)
+ strlcpy(timestring, Sys_TimeString(showtime_format.string), sizeof(timestring));
+ if (showdate.integer)
+ strlcpy(datestring, Sys_TimeString(showdate_format.string), sizeof(datestring));
+ if (fpsstring[0] || timestring[0])
+ {
fps_scalex = 12;
fps_scaley = 12;
- fps_x = vid.conwidth - (fps_scalex * strlen(temp));
- fps_y = vid.conheight - sb_lines/* - 8*/; // yes this might draw over the sbar
- if (fps_y > vid.conheight - fps_scaley)
- fps_y = vid.conheight - fps_scaley;
- DrawQ_Fill(fps_x, fps_y, fps_scalex * strlen(temp), fps_scaley, 0, 0, 0, 0.5 * sbar_alpha.value, 0);
- DrawQ_String(fps_x, fps_y, temp, 0, fps_scalex, fps_scaley, 1, 1, 1, 1 * sbar_alpha.value, 0);
+ fps_height = fps_scaley * ((fpsstring[0] != 0) + (timestring[0] != 0) + (datestring[0] != 0));
+ //fps_y = vid.conheight - sb_lines; // yes this may draw over the sbar
+ //fps_y = bound(0, fps_y, vid.conheight - fps_height);
+ fps_y = vid.conheight - fps_height;
+ if (fpsstring[0])
+ {
+ fps_x = vid.conwidth - fps_scalex * strlen(fpsstring);
+ DrawQ_Fill(fps_x, fps_y, fps_scalex * strlen(fpsstring), fps_scaley, 0, 0, 0, 0.5 * sbar_alpha.value, 0);
+ DrawQ_String(fps_x, fps_y, fpsstring, 0, fps_scalex, fps_scaley, 1, 1, 1, 1 * sbar_alpha.value, 0);
+ fps_y += fps_scaley;
+ }
+ if (timestring[0])
+ {
+ fps_x = vid.conwidth - fps_scalex * strlen(timestring);
+ DrawQ_Fill(fps_x, fps_y, fps_scalex * strlen(timestring), fps_scaley, 0, 0, 0, 0.5 * sbar_alpha.value, 0);
+ DrawQ_String(fps_x, fps_y, timestring, 0, fps_scalex, fps_scaley, 1, 1, 1, 1 * sbar_alpha.value, 0);
+ fps_y += fps_scaley;
+ }
+ if (datestring[0])
+ {
+ fps_x = vid.conwidth - fps_scalex * strlen(datestring);
+ DrawQ_Fill(fps_x, fps_y, fps_scalex * strlen(datestring), fps_scaley, 0, 0, 0, 0.5 * sbar_alpha.value, 0);
+ DrawQ_String(fps_x, fps_y, datestring, 0, fps_scalex, fps_scaley, 1, 1, 1, 1 * sbar_alpha.value, 0);
+ fps_y += fps_scaley;
+ }
}
}