diff --git a/quit.cpp b/quit.cpp index e8a9e60d..9a5db8f9 100644 --- a/quit.cpp +++ b/quit.cpp @@ -26,6 +26,10 @@ EX int getgametime() { return (int) (savetime + (timerstopped ? 0 : (time(NULL) - timerstart))); } +EX ld getgametime_precise() { + return savetime + (timerstopped ? 0 : (ticks - tickstart) / 1000.); + } + EX string getgametime_s(int timespent IS(getgametime())) { return hr::format("%d:%02d", timespent/60, timespent % 60); } diff --git a/system.cpp b/system.cpp index a97a99c7..6e47e4eb 100644 --- a/system.cpp +++ b/system.cpp @@ -54,7 +54,7 @@ EX int truelotus; EX int asteroids_generated, asteroid_orbs_generated; -EX time_t timerstart, savetime; +EX time_t timerstart, savetime, tickstart; EX bool timerstopped; EX int savecount; EX int save_turns; @@ -378,6 +378,7 @@ EX void initgame() { if(!safety) { usedSafety = false; timerstart = time(NULL); turncount = 0; rosewave = 0; rosephase = 0; + tickstart = ticks; noiseuntil = 0; sagephase = 0; hardcoreAt = 0; timerstopped = false; diff --git a/util.cpp b/util.cpp index 2ab2c18d..136e892c 100644 --- a/util.cpp +++ b/util.cpp @@ -393,6 +393,7 @@ cld exp_parser::parse(int prio) { else if(number == "mousey") res = mousey; else if(number == "turncount") res = turncount; else if(number == "framecount") res = frameid; + else if(number == "gametime") res = getgametime_precise(); else if(number == "last_a") res = anims::last_anim_vars[0]; else if(number == "last_b") res = anims::last_anim_vars[1]; else if(number == "last_c") res = anims::last_anim_vars[2];