mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Settings: Proper priority hierarchy
Remove old defaults system Introduce priority-based fallback list Use new functions for map_meta special functions Change groups to use end tags Unittest changes: * Adapt unittest to the new code * Compare Settings objects
This commit is contained in:
parent
5e9dd1667b
commit
37a05ec8d6
21 changed files with 358 additions and 298 deletions
|
@ -329,18 +329,16 @@ void loadGameConfAndInitWorld(const std::string &path, const std::string &name,
|
|||
}
|
||||
}
|
||||
|
||||
// Override defaults with those provided by the game.
|
||||
// We clear and reload the defaults because the defaults
|
||||
// might have been overridden by other subgame config
|
||||
// files that were loaded before.
|
||||
g_settings->clearDefaults();
|
||||
set_default_settings(g_settings);
|
||||
Settings *game_settings = Settings::getLayer(SL_GAME);
|
||||
const bool new_game_settings = (game_settings == nullptr);
|
||||
if (new_game_settings) {
|
||||
// Called by main-menu without a Server instance running
|
||||
// -> create and free manually
|
||||
game_settings = Settings::createLayer(SL_GAME);
|
||||
}
|
||||
|
||||
Settings game_defaults;
|
||||
getGameMinetestConfig(gamespec.path, game_defaults);
|
||||
game_defaults.removeSecureSettings();
|
||||
|
||||
g_settings->overrideDefaults(&game_defaults);
|
||||
getGameMinetestConfig(gamespec.path, *game_settings);
|
||||
game_settings->removeSecureSettings();
|
||||
|
||||
infostream << "Initializing world at " << final_path << std::endl;
|
||||
|
||||
|
@ -381,4 +379,8 @@ void loadGameConfAndInitWorld(const std::string &path, const std::string &name,
|
|||
|
||||
fs::safeWriteToFile(map_meta_path, oss.str());
|
||||
}
|
||||
|
||||
// The Settings object is no longer needed for created worlds
|
||||
if (new_game_settings)
|
||||
delete game_settings;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue