diff options
Diffstat (limited to 'Stars45/Clock.cpp')
-rw-r--r-- | Stars45/Clock.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/Stars45/Clock.cpp b/Stars45/Clock.cpp index 0bd3447..4973a5c 100644 --- a/Stars45/Clock.cpp +++ b/Stars45/Clock.cpp @@ -20,7 +20,6 @@ Clock::Clock() : m_delta {STARTING_DELTA}, m_gui_delta {STARTING_DELTA} { - Set(); } @@ -28,27 +27,17 @@ void Clock::Set() { m_point = inner_clock::now(); - m_compression = NO_COMPRESSION; m_delta = STARTING_DELTA; m_gui_delta = STARTING_DELTA; } -void -Clock::Reset() -{ - m_game_elapsed = elapsed_duration::zero(); - m_real_elapsed = elapsed_duration::zero(); - Set(); -} - - double Clock::Step() { const auto next = inner_clock::now(); - const auto delta = std::chrono::duration_cast<std::chrono::milliseconds>(next - m_point); - m_game_elapsed += std::chrono::duration_cast<std::chrono::milliseconds>(delta * m_compression); + const auto delta = std::chrono::duration_cast<elapsed_duration>(next - m_point); + m_game_elapsed += std::chrono::duration_cast<elapsed_duration>(delta * m_compression); m_real_elapsed += delta; const std::chrono::duration<double> seconds = delta; m_delta = seconds.count() * m_compression; @@ -58,6 +47,21 @@ Clock::Step() } +void +Clock::ResetGameTime() +{ + m_game_elapsed = elapsed_duration::zero(); +} + + +void +Clock::SkipGameTime(double seconds) +{ + const std::chrono::duration<double> skip {seconds}; + m_game_elapsed += std::chrono::duration_cast<elapsed_duration>(skip); +} + + double Clock::Delta() const { |