From 3b004ab63c16f2eb783e29a35131450ba28383a3 Mon Sep 17 00:00:00 2001 From: Aki Date: Tue, 5 Apr 2022 23:18:53 +0200 Subject: Elapsed time clock methods are now templates --- StarsEx/Clock.cpp | 14 -------------- StarsEx/Clock.h | 9 +++++---- StarsEx/Clock.inl | 28 ++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 StarsEx/Clock.inl (limited to 'StarsEx') diff --git a/StarsEx/Clock.cpp b/StarsEx/Clock.cpp index e5db6c3..4a321d8 100644 --- a/StarsEx/Clock.cpp +++ b/StarsEx/Clock.cpp @@ -122,20 +122,6 @@ Clock::TimeCompression() const } -Clock::count_type -Clock::GameTime() const -{ - return std::chrono::duration_cast(m_game_elapsed).count(); -} - - -Clock::count_type -Clock::RealTime() const -{ - return std::chrono::duration_cast(m_real_elapsed).count(); -} - - void Clock::SetTimeCompression(double compression) { diff --git a/StarsEx/Clock.h b/StarsEx/Clock.h index 4f51330..39e08ac 100644 --- a/StarsEx/Clock.h +++ b/StarsEx/Clock.h @@ -8,14 +8,13 @@ #define Clock_h #include +#include class Clock { public: using inner_clock = std::chrono::high_resolution_clock; - using elapsed_duration = std::chrono::milliseconds; - using count_type = elapsed_duration::rep; static Clock* GetInstance(); static bool Init(); @@ -30,8 +29,8 @@ public: double GuiDelta() const; double Rate() const; double TimeCompression() const; - count_type GameTime() const; - count_type RealTime() const; + template R GameTime() const; + template R RealTime() const; void SetTimeCompression(double compression); @@ -51,4 +50,6 @@ private: }; +#include "Clock.inl" + #endif // Clock_h diff --git a/StarsEx/Clock.inl b/StarsEx/Clock.inl new file mode 100644 index 0000000..42a2693 --- /dev/null +++ b/StarsEx/Clock.inl @@ -0,0 +1,28 @@ +/* Starshatter: The Open Source Project + Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors + Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors + Copyright (c) 1997-2006, Destroyer Studios LLC. +*/ + +#include "Clock.h" + +#include +#include + + +template +R +Clock::GameTime() const +{ + using target_duration = std::chrono::duration; + return std::chrono::duration_cast(m_game_elapsed).count(); +} + + +template +R +Clock::RealTime() const +{ + using target_duration = std::chrono::duration; + return std::chrono::duration_cast(m_real_elapsed).count(); +} -- cgit v1.1