summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/app/app.cpp15
-rw-r--r--src/app/app.h6
-rw-r--r--src/object/robotmain.cpp2
3 files changed, 21 insertions, 2 deletions
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 932e61e..7acef31 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -1264,13 +1264,24 @@ void CApplication::SuspendSimulation()
void CApplication::ResumeSimulation()
{
m_simulationSuspended = false;
+ InternalResumeSimulation();
+ GetLogger()->Info("Resume simulation\n");
+}
+
+void CApplication::ResetTimeAfterLoading()
+{
+ InternalResumeSimulation();
+
+ GetLogger()->Trace("Resume simulation on loading\n");
+}
+
+void CApplication::InternalResumeSimulation()
+{
GetSystemUtils()->GetCurrentTimeStamp(m_baseTimeStamp);
GetSystemUtils()->CopyTimeStamp(m_curTimeStamp, m_baseTimeStamp);
m_realAbsTimeBase = m_realAbsTime;
m_absTimeBase = m_exactAbsTime;
-
- GetLogger()->Info("Resume simulation\n");
}
bool CApplication::GetSimulationSuspended() const
diff --git a/src/app/app.h b/src/app/app.h
index 34028c7..6c53cf9 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -234,6 +234,9 @@ public:
//! Returns whether simulation is suspended
bool GetSimulationSuspended() const;
+ //! Resets time counters to account for time spent loading game
+ void ResetTimeAfterLoading();
+
//@{
//! Management of simulation speed
void SetSimulationSpeed(float speed);
@@ -368,6 +371,9 @@ protected:
//! Closes the joystick device
void CloseJoystick();
+ //! Internal procedure to reset time counters
+ void InternalResumeSimulation();
+
//! Resets all performance counters to zero
void ResetPerformanceCounters();
//! Updates performance counters from gathered timer data
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp
index 6539372..9b37a84 100644
--- a/src/object/robotmain.cpp
+++ b/src/object/robotmain.cpp
@@ -1196,6 +1196,8 @@ void CRobotMain::ChangePhase(Phase phase)
if (m_mapImage)
m_map->SetFixImage(m_mapFilename);
+ m_app->ResetTimeAfterLoading();
+
/*Math::Point ddim;
pos.x = 620.0f/640.0f;