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

Function createIndex

src/OpenLoco/src/Scenario/ScenarioManager.cpp:291–387  ·  view source on GitHub ↗

0x004447DF

Source from the content-addressed store, hash-verified

289
290 // 0x004447DF
291 static void createIndex(const ScenarioFolderState& currentState)
292 {
293 Input::processMessagesMini();
294 Ui::ProgressBar::begin(StringIds::checkingScenarioFiles);
295
296 _scenarioHeader.state = currentState;
297 _scenarioHeader.state.numFiles = (currentState.numFiles & 0xFFFFFF) | (1 << 24);
298
299 for (auto& entry : _scenarioList)
300 {
301 entry.flags &= ~ScenarioIndexFlags::flag_0;
302 }
303
304 const auto scenarioPath = Environment::getPathNoWarning(Environment::PathId::scenarios);
305 auto numScenariosDetected = 0;
306 for (const auto& file : fs::directory_iterator(scenarioPath, fs::directory_options::skip_permission_denied))
307 {
308 if (!file.is_regular_file())
309 {
310 continue;
311 }
312 if (!Utility::iequals(file.path().extension().u8string(), ".sc5"))
313 {
314 continue;
315 }
316
317 numScenariosDetected++;
318 }
319
320 auto currentScenarioOffset = 0;
321 for (const auto& file : fs::directory_iterator(scenarioPath, fs::directory_options::skip_permission_denied))
322 {
323 if (!file.is_regular_file())
324 {
325 continue;
326 }
327 if (!Utility::iequals(file.path().extension().u8string(), ".sc5"))
328 {
329 continue;
330 }
331
332 Input::processMessagesMini();
333
334 currentScenarioOffset++;
335 auto currentScenarioProgress = currentScenarioOffset * 225 / numScenariosDetected;
336 Ui::ProgressBar::setProgress(currentScenarioProgress);
337
338 const auto u8FileName = file.path().filename().u8string();
339 auto foundId = findScenario(u8FileName);
340
341 const auto options = S5::readScenarioOptions(file.path());
342 if (options == nullptr)
343 {
344 continue;
345 }
346 if (options->editorStep != EditorController::Step::null)
347 {
348 continue;

Callers 1

loadIndexFunction · 0.70

Calls 15

processMessagesMiniFunction · 0.85
beginFunction · 0.85
getPathNoWarningFunction · 0.85
iequalsFunction · 0.85
findScenarioFunction · 0.85
readScenarioOptionsFunction · 0.85
loadScenarioProgressFunction · 0.85
loadScenarioDetailsFunction · 0.85
reloadAllFunction · 0.85
endFunction · 0.85
push_backMethod · 0.80
valueMethod · 0.80

Tested by

no test coverage detected