+double topspeed = 0;
+double topspeedxy = 0;
+time_t current_time = 3;
+time_t top_time = 0;
+time_t topxy_time = 0;
+
+static void get_showspeed_unit(int unitnumber, double *conversion_factor, const char **unit)
+{
+ if(unitnumber < 0)
+ unitnumber = showspeed.integer;
+ switch(unitnumber)
+ {
+ default:
+ case 1:
+ if(gamemode == GAME_NEXUIZ)
+ *unit = "in/s";
+ else
+ *unit = "qu/s";
+ *conversion_factor = 1.0;
+ break;
+ case 2:
+ *unit = "m/s";
+ *conversion_factor = 0.0254;
+ if(gamemode != GAME_NEXUIZ) *conversion_factor *= 1.5;
+ // 1qu=1.5in is for non-Nexuiz only - Nexuiz players are overly large, but 1qu=1in fixes that
+ break;
+ case 3:
+ *unit = "km/h";
+ *conversion_factor = 0.0254 * 3.6;
+ if(gamemode != GAME_NEXUIZ) *conversion_factor *= 1.5;
+ break;
+ case 4:
+ *unit = "mph";
+ *conversion_factor = 0.0254 * 3.6 * 0.6213711922;
+ if(gamemode != GAME_NEXUIZ) *conversion_factor *= 1.5;
+ break;
+ case 5:
+ *unit = "knots";
+ *conversion_factor = 0.0254 * 1.943844492; // 1 m/s = 1.943844492 knots, because 1 knot = 1.852 km/h
+ if(gamemode != GAME_NEXUIZ) *conversion_factor *= 1.5;
+ break;
+ }
+}
+
+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++;
+}