MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / configuration

Method configuration

source/game/StarRoot.cpp:395–431  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

393}
394
395ConfigurationPtr Root::configuration() {
396 return loadMemberFunction<Configuration>(m_configuration, m_configurationMutex, "Configuration", [this]() {
397 Json currentConfig;
398
399 if (m_runtimeConfigFile) {
400 if (!File::isFile(*m_runtimeConfigFile)) {
401 Logger::info("Root: no runtime config file, creating new default runtime config");
402 currentConfig = m_settings.defaultConfiguration;
403 } else {
404 try {
405 Json jConfig = Json::parseJson(File::readFileString(*m_runtimeConfigFile));
406 if (!jConfig.isType(Json::Type::Object))
407 throw ConfigurationException("User config is not of JSON type Object");
408
409 if (jConfig.get("configurationVersion", {}) != m_settings.defaultConfiguration.get("configurationVersion", {}))
410 throw ConfigurationException("User config version does not match default config version");
411
412 auto config = jConfig.toObject();
413 for (auto& entry : *m_settings.defaultConfiguration.objectPtr()) {
414 if (!config.contains(entry.first))
415 config.insert(entry.first, entry.second);
416 }
417
418 currentConfig = config;
419 } catch (std::exception const& e) {
420 Logger::warn("Root: Failed to load user configuration file {}, resetting user config: {}", *m_runtimeConfigFile, outputException(e, false));
421 currentConfig = m_settings.defaultConfiguration;
422 File::rename(*m_runtimeConfigFile, *m_runtimeConfigFile + ".old");
423 }
424 }
425 } else {
426 currentConfig = m_settings.defaultConfiguration;
427 }
428
429 return make_shared<Configuration>(m_settings.defaultConfiguration, currentConfig);
430 });
431}
432
433ObjectDatabaseConstPtr Root::objectDatabase() {
434 return loadMember(m_objectDatabase, m_objectDatabaseMutex, "ObjectDatabase");

Callers 15

StarHumanoid.cppFile · 0.80
TeamManagerMethod · 0.80
renderMethod · 0.80
lightingCalcMethod · 0.80
initWorldMethod · 0.80
queueRadioMessageMethod · 0.80
restartLuaMethod · 0.80
autoAddToCustomBarMethod · 0.80
PlayerStorageMethod · 0.80
deletePlayerMethod · 0.80
backupCycleMethod · 0.80
addClientMethod · 0.80

Calls 7

toObjectMethod · 0.80
objectPtrMethod · 0.80
outputExceptionFunction · 0.50
isTypeMethod · 0.45
getMethod · 0.45
containsMethod · 0.45
insertMethod · 0.45

Tested by 1

SetUpMethod · 0.64