From e015d9f1c352680da96cbf636504ef0c4892cb37 Mon Sep 17 00:00:00 2001 From: krzys-h Date: Tue, 1 Sep 2015 16:15:59 +0200 Subject: [PATCH] Don't allow saving if crashed during loading --- src/app/signal_handlers.cpp | 5 +++-- src/level/robotmain.cpp | 5 +++++ src/level/robotmain.h | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/signal_handlers.cpp b/src/app/signal_handlers.cpp index 6b242753..778233f3 100644 --- a/src/app/signal_handlers.cpp +++ b/src/app/signal_handlers.cpp @@ -63,7 +63,8 @@ void CSignalHandlers::SignalHandler(int sig) #include #include #include -std::string demangle(const char* name) { +std::string demangle(const char* name) +{ int status; std::unique_ptr result { abi::__cxa_demangle(name, nullptr, nullptr, &status), @@ -150,7 +151,7 @@ void CSignalHandlers::ReportError(const std::string& errorMessage) robotMain = CRobotMain::GetInstancePointer(); msg << "The game was in phase " << PhaseToString(robotMain->GetPhase()) << " (ID=" << robotMain->GetPhase() << ")" << std::endl; msg << "Last started level was: category=" << GetLevelCategoryDir(robotMain->GetLevelCategory()) << " chap=" << robotMain->GetLevelChap() << " rank=" << robotMain->GetLevelRank() << std::endl; - canSave = (robotMain->GetPhase() == PHASE_SIMUL); + canSave = (robotMain->GetPhase() == PHASE_SIMUL) && !robotMain->IsLoading(); } msg << "==============================" << std::endl; msg << std::endl; diff --git a/src/level/robotmain.cpp b/src/level/robotmain.cpp index 3873bf49..ab54a7b7 100644 --- a/src/level/robotmain.cpp +++ b/src/level/robotmain.cpp @@ -5541,6 +5541,11 @@ const std::vector& CRobotMain::GetCustomLevelList() return m_ui->GetCustomLevelList(); } +bool CRobotMain::IsLoading() +{ + return m_ui->GetLoadingScreen()->IsVisible(); +} + void CRobotMain::StartMissionTimer() { if (m_missionTimerEnabled && !m_missionTimerStarted) diff --git a/src/level/robotmain.h b/src/level/robotmain.h index 3fc003e3..622c18b5 100644 --- a/src/level/robotmain.h +++ b/src/level/robotmain.h @@ -302,6 +302,9 @@ public: std::string GetCustomLevelName(int id); const std::vector& GetCustomLevelList(); + //! Returns true if the game is on the loading screen + bool IsLoading(); + void StartMissionTimer(); void SetAutosave(bool enable);