MCPcopy Create free account
hub / github.com/OpenLoco/OpenLoco / start

Function start

src/OpenLoco/src/Scenario/Scenario.cpp:302–374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

300 }
301
302 void start()
303 {
304 WindowManager::closeConstructionWindows();
305 WindowManager::closeAllFloatingWindows();
306
307 SceneManager::removeSceneFlags(SceneManager::Flags::title);
308 resetSubsystems();
309 Gui::init();
310 Audio::resetMusic();
311
312 auto& gameState = getGameState();
313 if ((gameState.flags & GameStateFlags::tileManagerLoaded) != GameStateFlags::none)
314 {
315 auto mainWindow = WindowManager::getMainWindow();
316 if (mainWindow != nullptr)
317 {
318 SavedViewSimple savedView;
319 savedView.viewX = gameState.savedViewX;
320 savedView.viewY = gameState.savedViewY;
321 savedView.zoomLevel = static_cast<ZoomLevel>(gameState.savedViewZoom);
322 savedView.rotation = gameState.savedViewRotation;
323 mainWindow->viewportFromSavedView(savedView);
324 mainWindow->invalidate();
325 }
326 }
327 else
328 {
329 generateLandscape();
330 WindowManager::setCurrentRotation(0);
331 }
332
333 EntityManager::updateSpatialIndex();
334 WindowManager::resetThousandthTickCounter();
335 Ui::Windows::Terraform::resetLastSelections();
336 MessageManager::reset();
337
338 std::memcpy(gameState.scenarioDetails, Scenario::getOptions().scenarioDetails, sizeof(gameState.scenarioDetails));
339 std::memcpy(gameState.scenarioName, Scenario::getOptions().scenarioName, sizeof(gameState.scenarioName));
340
341 const auto* stexObj = ObjectManager::get<ScenarioTextObject>();
342 if (stexObj != nullptr)
343 {
344 char buffer[256];
345 StringManager::formatString(buffer, sizeof(buffer), stexObj->details);
346 std::strncpy(gameState.scenarioDetails, buffer, sizeof(gameState.scenarioDetails));
347 }
348
349 auto savePath = Environment::getPath(Environment::PathId::save);
350 savePath /= std::string(Scenario::getOptions().scenarioName) + S5::extensionSV5;
351 Game::setActiveSavePath(savePath.u8string());
352
353 loadPreferredCurrencyNewGame();
354 Gfx::loadCurrency();
355 CompanyManager::reset();
356 CompanyManager::createPlayerCompany();
357 initialiseDate(Scenario::getOptions().scenarioStartYear);
358 initialiseSnowLine();
359 sub_4748D4();

Callers 2

loadAndStartFunction · 0.70
sub_4391CCFunction · 0.50

Calls 15

closeConstructionWindowsFunction · 0.85
removeSceneFlagsFunction · 0.85
resetSubsystemsFunction · 0.85
resetMusicFunction · 0.85
getMainWindowFunction · 0.85
generateLandscapeFunction · 0.85
setCurrentRotationFunction · 0.85
updateSpatialIndexFunction · 0.85
resetLastSelectionsFunction · 0.85
formatStringFunction · 0.85
getPathFunction · 0.85

Tested by

no test coverage detected