X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=sbar.c;h=6d0c087cef5a7f5acda31b7a5dca82194891683d;hb=840e5386a67c533cf30a09f6f6751debb8405d71;hp=c6fcbf648fc57eb4c0950bb10f2c498a8dde31d9;hpb=34043d3ceaa5a64215903acac3038b35048b7505;p=xonotic%2Fdarkplaces.git diff --git a/sbar.c b/sbar.c index c6fcbf64..6d0c087c 100644 --- a/sbar.c +++ b/sbar.c @@ -155,7 +155,7 @@ void sbar_start(void) { int i; - if (gamemode == GAME_DELUXEQUAKE) + if (gamemode == GAME_DELUXEQUAKE || gamemode == GAME_BLOODOMNICIDE) { } else if (gamemode == GAME_SOM) @@ -1090,6 +1090,27 @@ static void get_showspeed_unit(int unitnumber, double *conversion_factor, const } } +static double showfps_nexttime = 0, showfps_lasttime = -1; +static double showfps_framerate = 0; +static int showfps_framecount = 0; + +void Sbar_ShowFPS_Update(void) +{ + double interval = 1; + double newtime; + newtime = realtime; + if (newtime >= showfps_nexttime) + { + showfps_framerate = showfps_framecount / (newtime - showfps_lasttime); + if (showfps_nexttime < newtime - interval * 1.5) + showfps_nexttime = newtime; + showfps_lasttime = newtime; + showfps_nexttime += interval; + showfps_framecount = 0; + } + showfps_framecount++; +} + void Sbar_ShowFPS(void) { float fps_x, fps_y, fps_scalex, fps_scaley, fps_height; @@ -1097,12 +1118,16 @@ void Sbar_ShowFPS(void) char fpsstring[32]; char timestring[32]; char datestring[32]; + char timedemostring1[32]; + char timedemostring2[32]; char speedstring[32]; char blurstring[32]; char topspeedstring[48]; qboolean red = false; soundstring[0] = 0; fpsstring[0] = 0; + timedemostring1[0] = 0; + timedemostring2[0] = 0; timestring[0] = 0; datestring[0] = 0; speedstring[0] = 0; @@ -1110,32 +1135,18 @@ void Sbar_ShowFPS(void) topspeedstring[0] = 0; if (showfps.integer) { - float calc; - static double nexttime = 0, lasttime = 0; - static double framerate = 0; - static int framecount = 0; - double interval = 1; - double newtime; - newtime = Sys_DoubleTime(); - if (newtime >= nexttime) - { - framerate = framecount / (newtime - lasttime); - if (nexttime < newtime - interval * 1.5) - nexttime = newtime; - lasttime = newtime; - nexttime += interval; - framecount = 0; - } - framecount++; - calc = framerate; - red = (calc < 1.0f); - + red = (showfps_framerate < 1.0f); if(showfps.integer == 2) - dpsnprintf(fpsstring, sizeof(fpsstring), "%7.3f mspf", (1000.0 / calc)); + dpsnprintf(fpsstring, sizeof(fpsstring), "%7.3f mspf", (1000.0 / showfps_framerate)); else if (red) - dpsnprintf(fpsstring, sizeof(fpsstring), "%4i spf", (int)(1.0 / calc + 0.5)); + dpsnprintf(fpsstring, sizeof(fpsstring), "%4i spf", (int)(1.0 / showfps_framerate + 0.5)); else - dpsnprintf(fpsstring, sizeof(fpsstring), "%4i fps", (int)(calc + 0.5)); + dpsnprintf(fpsstring, sizeof(fpsstring), "%4i fps", (int)(showfps_framerate + 0.5)); + if (cls.timedemo) + { + dpsnprintf(timedemostring1, sizeof(timedemostring1), "frame%4i %f", cls.td_frames, realtime - cls.td_starttime); + dpsnprintf(timedemostring2, sizeof(timedemostring2), "%i seconds %3.0f/%3.0f/%3.0f fps", cls.td_onesecondavgcount, cls.td_onesecondminfps, cls.td_onesecondavgfps / max(1, cls.td_onesecondavgcount), cls.td_onesecondmaxfps); + } } if (showtime.integer) strlcpy(timestring, Sys_TimeString(showtime_format.string), sizeof(timestring)); @@ -1181,11 +1192,11 @@ void Sbar_ShowFPS(void) time(¤t_time); } } - if (fpsstring[0] || timestring[0] || datestring[0] || speedstring[0] || blurstring[0] || topspeedstring[0]) + if (fpsstring[0] || timedemostring1[0] || timedemostring2[0] || timestring[0] || datestring[0] || speedstring[0] || blurstring[0] || topspeedstring[0]) { fps_scalex = 12; fps_scaley = 12; - fps_height = fps_scaley * ((soundstring[0] != 0) + (blurstring[0] != 0) + (fpsstring[0] != 0) + (timestring[0] != 0) + (datestring[0] != 0) + (speedstring[0] != 0) + (topspeedstring[0] != 0)); + fps_height = fps_scaley * ((soundstring[0] != 0) + (blurstring[0] != 0) + (fpsstring[0] != 0) + (timedemostring1[0] != 0) + (timedemostring2[0] != 0) + (timestring[0] != 0) + (datestring[0] != 0) + (speedstring[0] != 0) + (topspeedstring[0] != 0)); //fps_y = vid_conheight.integer - sb_lines; // yes this may draw over the sbar //fps_y = bound(0, fps_y, vid_conheight.integer - fps_height); fps_y = vid_conheight.integer - sbar_info_pos.integer - fps_height; @@ -1206,6 +1217,20 @@ void Sbar_ShowFPS(void) DrawQ_String_Font(fps_x, fps_y, fpsstring, 0, fps_scalex, fps_scaley, 1, 1, 1, 1, 0, NULL, true, FONT_INFOBAR); fps_y += fps_scaley; } + if (timedemostring1[0]) + { + fps_x = vid_conwidth.integer - DrawQ_TextWidth_Font(timedemostring1, 0, true, FONT_INFOBAR) * fps_scalex; + DrawQ_Fill(fps_x, fps_y, vid_conwidth.integer - fps_x, fps_scaley, 0, 0, 0, 0.5, 0); + DrawQ_String_Font(fps_x, fps_y, timedemostring1, 0, fps_scalex, fps_scaley, 1, 1, 1, 1, 0, NULL, true, FONT_INFOBAR); + fps_y += fps_scaley; + } + if (timedemostring2[0]) + { + fps_x = vid_conwidth.integer - DrawQ_TextWidth_Font(timedemostring2, 0, true, FONT_INFOBAR) * fps_scalex; + DrawQ_Fill(fps_x, fps_y, vid_conwidth.integer - fps_x, fps_scaley, 0, 0, 0, 0.5, 0); + DrawQ_String_Font(fps_x, fps_y, timedemostring2, 0, fps_scalex, fps_scaley, 1, 1, 1, 1, 0, NULL, true, FONT_INFOBAR); + fps_y += fps_scaley; + } if (timestring[0]) { fps_x = vid_conwidth.integer - DrawQ_TextWidth_Font(timestring, 0, true, FONT_INFOBAR) * fps_scalex; @@ -1717,8 +1742,6 @@ void Sbar_Draw (void) } } - Sbar_ShowFPS(); - if (cl.csqc_vidvars.drawcrosshair && crosshair.integer >= 1 && !cl.intermission && !r_letterbox.value) { pic = Draw_CachePic (va("gfx/crosshair%i", crosshair.integer));