From d357de14385fdf249e9c358fba35c2efaa9ff77e Mon Sep 17 00:00:00 2001 From: melex750 Date: Tue, 24 Oct 2017 05:12:19 -0400 Subject: [PATCH] Save object lifetime and abstime Fixes #1006 --- src/level/robotmain.cpp | 6 +++++- src/object/old_object.cpp | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/level/robotmain.cpp b/src/level/robotmain.cpp index a92b10b2..d55cd174 100644 --- a/src/level/robotmain.cpp +++ b/src/level/robotmain.cpp @@ -3689,7 +3689,7 @@ void CRobotMain::CreateScene(bool soluce, bool fixScene, bool resetObject) // TODO: m_engine->TimeInit(); ?? m_input->ResetKeyStates(); m_time = 0.0f; - m_gameTime = 0.0f; + if (m_sceneReadPath.empty()) m_gameTime = 0.0f; m_gameTimeAbsolute = 0.0f; m_autosaveLast = 0.0f; m_infoUsed = 0; @@ -4542,6 +4542,7 @@ bool CRobotMain::IOWriteScene(std::string filename, std::string filecbot, std::s else line->AddParam("chap", MakeUnique(m_levelChap)); line->AddParam("rank", MakeUnique(m_levelRank)); + line->AddParam("gametime", MakeUnique(GetGameTime())); levelParser.AddLine(std::move(line)); line = MakeUnique("Map"); @@ -4722,6 +4723,9 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot) int objCounter = 0; for (auto& line : levelParser.GetLines()) { + if (line->GetCommand() == "Mission") + m_gameTime = line->GetParam("gametime")->AsFloat(0.0f); + if (line->GetCommand() == "Map") m_map->ZoomMap(line->GetParam("zoom")->AsFloat()); diff --git a/src/object/old_object.cpp b/src/object/old_object.cpp index dbe92b32..247b5a17 100644 --- a/src/object/old_object.cpp +++ b/src/object/old_object.cpp @@ -1010,6 +1010,8 @@ void COldObject::Write(CLevelParserLine* line) if ( m_virusTime != 0.0f ) line->AddParam("virusTime", MakeUnique(m_virusTime)); + line->AddParam("lifetime", MakeUnique(m_aTime)); + // Sets the parameters of the command line. CLevelParserParamVec cmdline; for(float value : GetCmdLine()) @@ -1144,6 +1146,8 @@ void COldObject::Read(CLevelParserLine* line) m_bVirusMode = line->GetParam("virusMode")->AsBool(false); m_virusTime = line->GetParam("virusTime")->AsFloat(0.0f); + m_aTime = line->GetParam("lifetime")->AsFloat(0.0f); + if ( m_motion != nullptr ) { m_motion->Read(line);