diff options
author | Aki <please@ignore.pl> | 2022-03-07 23:56:54 +0100 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-03-07 23:57:49 +0100 |
commit | f725e598935860d15099a0310a3aef7197a58e9c (patch) | |
tree | ab227ca1318c4a79abdc5ba749724e158869aa46 /Stars45/Clock.cpp | |
parent | a80a4f25fe4f7b235443c87ff840e5e06a41290e (diff) | |
download | starshatter-f725e598935860d15099a0310a3aef7197a58e9c.zip starshatter-f725e598935860d15099a0310a3aef7197a58e9c.tar.gz starshatter-f725e598935860d15099a0310a3aef7197a58e9c.tar.bz2 |
Replaced old integrated clock with new one
The interface remains unchanged for now, but changing to use GetClock
or similar method to get clock owned by the Game instance is preferred.
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 { |