@@ -144,41 +144,41 @@ void MainLoopController::processLoadingScreen()
144144{
145145 drawLoadingScreen ();
146146
147- auto requestedSimState = _PersisterFacade::get ()->getRequestState (_loadSimRequestId).value ();
148- if (requestedSimState == PersisterRequestState::Finished) {
149- auto const & data = _PersisterFacade::get ()->fetchReadSimulationData (_loadSimRequestId);
150- auto const & deserializedSim = data.deserializedSimulation ;
151- Viewport::get ().setCenterInWorldPos (deserializedSim.auxiliaryData .center );
152- Viewport::get ().setZoomFactor (deserializedSim.auxiliaryData .zoom );
153- TemporalControlWindow::get ().onSnapshot ();
154-
155- _simulationLoadedTimepoint = std::chrono::steady_clock::now ();
156- _programState = ProgramState::FadeOutLoadingScreen;
157- }
158- if (requestedSimState == PersisterRequestState::Error) {
159- GenericMessageDialog::get ().information (" Error" , " The default simulation file could not be read.\n An empty simulation will be created." );
160-
161- DeserializedSimulation deserializedSim;
162- deserializedSim.auxiliaryData .worldSize .x = 1000 ;
163- deserializedSim.auxiliaryData .worldSize .y = 500 ;
164- deserializedSim.auxiliaryData .timestep = 0 ;
165- deserializedSim.auxiliaryData .zoom = 12 .0f ;
166- deserializedSim.auxiliaryData .center = {500 .0f , 250 .0f };
167- deserializedSim.auxiliaryData .realTime = std::chrono::milliseconds (0 );
168-
169- _SimulationFacade::get ()->newSimulation (
170- deserializedSim.auxiliaryData .timestep , deserializedSim.auxiliaryData .worldSize , deserializedSim.auxiliaryData .simulationParameters );
171- _SimulationFacade::get ()->setSimulationData (deserializedSim.mainData );
172- _SimulationFacade::get ()->setStatisticsHistory (deserializedSim.statistics );
173- _SimulationFacade::get ()->setRealTime (deserializedSim.auxiliaryData .realTime );
174- Viewport::get ().setCenterInWorldPos (deserializedSim.auxiliaryData .center );
175- Viewport::get ().setZoomFactor (deserializedSim.auxiliaryData .zoom );
176- TemporalControlWindow::get ().onSnapshot ();
177-
178- _simulationLoadedTimepoint = std::chrono::steady_clock::now ();
179- _programState = ProgramState::FadeOutLoadingScreen;
147+ if (auto requestedSimState = _PersisterFacade::get ()->getRequestState (_loadSimRequestId)) {
148+ if (requestedSimState.value () == PersisterRequestState::Finished) {
149+ auto const & data = _PersisterFacade::get ()->fetchReadSimulationData (_loadSimRequestId);
150+ auto const & deserializedSim = data.deserializedSimulation ;
151+ Viewport::get ().setCenterInWorldPos (deserializedSim.auxiliaryData .center );
152+ Viewport::get ().setZoomFactor (deserializedSim.auxiliaryData .zoom );
153+ TemporalControlWindow::get ().onSnapshot ();
154+
155+ _simulationLoadedTimepoint = std::chrono::steady_clock::now ();
156+ _programState = ProgramState::FadeOutLoadingScreen;
157+ }
158+ if (requestedSimState.value () == PersisterRequestState::Error) {
159+ GenericMessageDialog::get ().information (" Error" , " The default simulation file could not be read.\n An empty simulation will be created." );
160+
161+ DeserializedSimulation deserializedSim;
162+ deserializedSim.auxiliaryData .worldSize .x = 1000 ;
163+ deserializedSim.auxiliaryData .worldSize .y = 500 ;
164+ deserializedSim.auxiliaryData .timestep = 0 ;
165+ deserializedSim.auxiliaryData .zoom = 12 .0f ;
166+ deserializedSim.auxiliaryData .center = {500 .0f , 250 .0f };
167+ deserializedSim.auxiliaryData .realTime = std::chrono::milliseconds (0 );
168+
169+ _SimulationFacade::get ()->newSimulation (
170+ deserializedSim.auxiliaryData .timestep , deserializedSim.auxiliaryData .worldSize , deserializedSim.auxiliaryData .simulationParameters );
171+ _SimulationFacade::get ()->setSimulationData (deserializedSim.mainData );
172+ _SimulationFacade::get ()->setStatisticsHistory (deserializedSim.statistics );
173+ _SimulationFacade::get ()->setRealTime (deserializedSim.auxiliaryData .realTime );
174+ Viewport::get ().setCenterInWorldPos (deserializedSim.auxiliaryData .center );
175+ Viewport::get ().setZoomFactor (deserializedSim.auxiliaryData .zoom );
176+ TemporalControlWindow::get ().onSnapshot ();
177+
178+ _simulationLoadedTimepoint = std::chrono::steady_clock::now ();
179+ _programState = ProgramState::FadeOutLoadingScreen;
180+ }
180181 }
181-
182182 OverlayController::get ().process ();
183183
184184 std::this_thread::sleep_for (std::chrono::milliseconds (10 ));
@@ -260,12 +260,13 @@ void MainLoopController::processExiting()
260260
261261 FpsController::get ().processForceFps (WindowController::get ().getFps ());
262262
263- auto requestedSimState = _PersisterFacade::get ()->getRequestState (_saveSimRequestId).value ();
264- if (requestedSimState == PersisterRequestState::Finished) {
265- _PersisterFacade::get ()->fetchSaveSimulationData (_saveSimRequestId);
266- _programState = ProgramState::Finished;
267- } else if (requestedSimState == PersisterRequestState::Error) {
268- _programState = ProgramState::Finished;
263+ if (auto requestedSimState = _PersisterFacade::get ()->getRequestState (_saveSimRequestId)) {
264+ if (requestedSimState.value () == PersisterRequestState::Finished) {
265+ _PersisterFacade::get ()->fetchSaveSimulationData (_saveSimRequestId);
266+ _programState = ProgramState::Finished;
267+ } else if (requestedSimState.value () == PersisterRequestState::Error) {
268+ _programState = ProgramState::Finished;
269+ }
269270 }
270271}
271272
0 commit comments