summaryrefslogtreecommitdiffhomepage
path: root/Stars45/Clock.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Stars45/Clock.cpp')
-rw-r--r--Stars45/Clock.cpp30
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
{