From 39bfcd8deb6ff8c15497fbd4a445858c48ba8c0e Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 14 Oct 2018 13:34:11 -0700 Subject: [PATCH] Stuff --- code/controllers/subsystems/time_track.dm | 37 +++++++++++++++++++++++ code/modules/mob/mob.dm | 10 +++--- polaris.dme | 1 + 3 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 code/controllers/subsystems/time_track.dm diff --git a/code/controllers/subsystems/time_track.dm b/code/controllers/subsystems/time_track.dm new file mode 100644 index 0000000000..aed175ed27 --- /dev/null +++ b/code/controllers/subsystems/time_track.dm @@ -0,0 +1,37 @@ +SUBSYSTEM_DEF(time_track) + name = "Time Tracking" + wait = 600 + flags = SS_NO_INIT|SS_NO_TICK_CHECK + runlevels = RUNLEVEL_LOBBY | RUNLEVELS_DEFAULT + + var/time_dilation_current = 0 + + var/time_dilation_avg_fast = 0 + var/time_dilation_avg = 0 + var/time_dilation_avg_slow = 0 + + var/first_run = TRUE + + var/last_tick_realtime = 0 + var/last_tick_byond_time = 0 + var/last_tick_tickcount = 0 + +/datum/controller/subsystem/time_track/fire() + + var/current_realtime = REALTIMEOFDAY + var/current_byondtime = world.time + var/current_tickcount = world.time/world.tick_lag + + if (!first_run) + var/tick_drift = max(0, (((current_realtime - last_tick_realtime) - (current_byondtime - last_tick_byond_time)) / world.tick_lag)) + + time_dilation_current = tick_drift / (current_tickcount - last_tick_tickcount) * 100 + + time_dilation_avg_fast = MC_AVERAGE_FAST(time_dilation_avg_fast, time_dilation_current) + time_dilation_avg = MC_AVERAGE(time_dilation_avg, time_dilation_avg_fast) + time_dilation_avg_slow = MC_AVERAGE_SLOW(time_dilation_avg_slow, time_dilation_avg) + else + first_run = FALSE + last_tick_realtime = current_realtime + last_tick_byond_time = current_byondtime + last_tick_tickcount = current_tickcount diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 30e966173e..1153366161 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -664,10 +664,12 @@ . = (is_client_active(10 MINUTES)) if(.) - if(statpanel("Status") && ticker && ticker.current_state != GAME_STATE_PREGAME) - stat("Station Time", stationtime2text()) - stat("Station Date", stationdate2text()) - stat("Round Duration", roundduration2text()) + if(statpanel("Status")) + stat(null, "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)") + if(ticker && ticker.current_state != GAME_STATE_PREGAME) + stat("Station Time", stationtime2text()) + stat("Station Date", stationdate2text()) + stat("Round Duration", roundduration2text()) if(client.holder) if(statpanel("Status")) diff --git a/polaris.dme b/polaris.dme index c23ba65c1b..622549e634 100644 --- a/polaris.dme +++ b/polaris.dme @@ -200,6 +200,7 @@ #include "code\controllers\subsystems\overlays.dm" #include "code\controllers\subsystems\planets.dm" #include "code\controllers\subsystems\shuttles.dm" +#include "code\controllers\subsystems\time_track.dm" #include "code\controllers\subsystems\timer.dm" #include "code\controllers\subsystems\xenoarch.dm" #include "code\controllers\subsystems\processing\processing.dm"