| 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(); |
no test coverage detected