Merge branch 'master' into jgrpp

# Conflicts:
#	os/macosx/notarize.sh
#	src/3rdparty/CMakeLists.txt
#	src/3rdparty/squirrel/squirrel/sqcompiler.cpp
#	src/3rdparty/squirrel/squirrel/sqdebug.cpp
#	src/3rdparty/squirrel/squirrel/sqvm.cpp
#	src/console_cmds.cpp
#	src/core/span_type.hpp
#	src/crashlog.cpp
#	src/currency.h
#	src/date_gui.cpp
#	src/driver.cpp
#	src/fios.cpp
#	src/genworld_gui.cpp
#	src/hotkeys.cpp
#	src/misc_gui.cpp
#	src/music/os2_m.cpp
#	src/network/core/os_abstraction.h
#	src/network/network_server.cpp
#	src/newgrf.cpp
#	src/newgrf_config.h
#	src/newgrf_text.cpp
#	src/openttd.cpp
#	src/os/macosx/font_osx.cpp
#	src/os/macosx/misc_osx.cpp
#	src/os/os2/CMakeLists.txt
#	src/os/os2/os2.cpp
#	src/os/unix/CMakeLists.txt
#	src/os/windows/font_win32.cpp
#	src/os/windows/win32_main.cpp
#	src/saveload/saveload.cpp
#	src/script/api/script_text.cpp
#	src/settings.cpp
#	src/settings_gui.cpp
#	src/stdafx.h
#	src/strings.cpp
#	src/timetable_gui.cpp
#	src/town_gui.cpp
#	src/train_cmd.cpp
#	src/video/dedicated_v.cpp
#	src/video/video_driver.cpp
#	src/video/win32_v.cpp
#	src/viewport.cpp
#	src/waypoint_gui.cpp
#	src/widgets/dropdown_type.h
#	src/window.cpp
#	src/window_gui.h
This commit is contained in:
Jonathan G Rennison
2023-09-12 20:06:47 +01:00
242 changed files with 4733 additions and 6402 deletions

View File

@@ -674,23 +674,23 @@ static void IniLoadSettings(IniFile &ini, const SettingTable &settings_table, co
group = group_def;
}
item = group->GetItem(s, false);
item = group->GetItem(s);
if (item == nullptr && group != group_def) {
/* For settings.xx.yy load the settings from [settings] yy = ? in case the previous
* did not exist (e.g. loading old config files with a [settings] section */
item = group_def->GetItem(s, false);
item = group_def->GetItem(s);
}
if (item == nullptr) {
/* For settings.xx.zz.yy load the settings from [zz] yy = ? in case the previous
* did not exist (e.g. loading old config files with a [yapf] section */
sc = s.find('.');
if (sc != std::string::npos) item = ini.GetGroup(s.substr(0, sc))->GetItem(s.substr(sc + 1), false);
if (sc != std::string::npos) item = ini.GetGroup(s.substr(0, sc))->GetItem(s.substr(sc + 1));
}
if (item == nullptr && sd->guiproc != nullptr) {
SettingOnGuiCtrlData data;
data.type = SOGCT_CFG_FALLBACK_NAME;
if (sd->guiproc(data)) {
item = group->GetItem(data.str, false);
item = group->GetItem(data.str);
}
}
}
@@ -745,8 +745,6 @@ void ListSettingDesc::ParseValue(const IniItem *item, void *object) const
static void IniSaveSettings(IniFile &ini, const SettingTable &settings_table, const char *grpname, void *object, bool)
{
IniGroup *group_def = nullptr, *group;
IniItem *item;
char buf[512];
for (auto &sd : settings_table) {
/* If the setting is not saved to the configuration
@@ -766,14 +764,15 @@ static void IniSaveSettings(IniFile &ini, const SettingTable &settings_table, co
group = group_def;
}
item = group->GetItem(s, true);
IniItem &item = group->GetOrCreateItem(s);
if (!item->value.has_value() || !sd->IsSameValue(item, object)) {
if (!item.value.has_value() || !sd->IsSameValue(&item, object)) {
/* Value has changed, get the new value and put it into a buffer */
char buf[512];
sd->FormatValue(buf, lastof(buf), object);
/* The value is different, that means we have to write it to the ini */
item->value.emplace(buf);
item.value.emplace(buf);
}
}
}
@@ -874,7 +873,7 @@ static void IniSaveSettingList(IniFile &ini, const char *grpname, StringList &li
group->Clear();
for (const auto &iter : list) {
group->GetItem(iter.c_str(), true)->SetValue("");
group->GetOrCreateItem(iter.c_str()).SetValue("");
}
}
@@ -2181,7 +2180,7 @@ static IniFileVersion LoadVersionFromConfig(IniFile &ini)
{
IniGroup *group = ini.GetGroup("version");
auto version_number = group->GetItem("ini_version", false);
auto version_number = group->GetItem("ini_version");
/* Older ini-file versions don't have this key yet. */
if (version_number == nullptr || !version_number->value.has_value()) return IFV_0;
@@ -2242,9 +2241,9 @@ static void GameSaveConfig(IniFile &ini, const char *grpname)
static void SaveVersionInConfig(IniFile &ini)
{
IniGroup *group = ini.GetGroup("version");
group->GetItem("version_string", true)->SetValue(_openttd_revision);
group->GetItem("version_number", true)->SetValue(stdstr_fmt("%08X", _openttd_newgrf_version));
group->GetItem("ini_version", true)->SetValue(std::to_string(INIFILE_VERSION));
group->GetOrCreateItem("version_string").SetValue(_openttd_revision);
group->GetOrCreateItem("version_number").SetValue(stdstr_fmt("%08X", _openttd_newgrf_version));
group->GetOrCreateItem("ini_version").SetValue(std::to_string(INIFILE_VERSION));
}
/* Save a GRF configuration to the given group name */
@@ -2260,7 +2259,7 @@ static void GRFSaveConfig(IniFile &ini, const char *grpname, const GRFConfig *li
char *pos = key + seprintf(key, lastof(key), "%08X|", BSWAP32(c->ident.grfid));
pos = md5sumToString(pos, lastof(key), c->ident.md5sum);
seprintf(pos, lastof(key), "|%s", c->filename.c_str());
group->GetItem(key, true)->SetValue(GRFBuildParamList(c));
group->GetOrCreateItem(key).SetValue(GRFBuildParamList(c));
}
}
@@ -2361,7 +2360,7 @@ void LoadFromConfig(bool startup)
if (_settings_client.network.server_game_type == SERVER_GAME_TYPE_LOCAL) {
IniGroup *network = generic_ini.GetGroup("network", false);
if (network != nullptr) {
IniItem *server_advertise = network->GetItem("server_advertise", false);
IniItem *server_advertise = network->GetItem("server_advertise");
if (server_advertise != nullptr && server_advertise->value == "true") {
_settings_client.network.server_game_type = SERVER_GAME_TYPE_PUBLIC;
}
@@ -2377,7 +2376,7 @@ void LoadFromConfig(bool startup)
if (generic_version < IFV_NETWORK_PRIVATE_SETTINGS) {
IniGroup *network = generic_ini.GetGroup("network", false);
if (network != nullptr) {
IniItem *no_http_content_downloads = network->GetItem("no_http_content_downloads", false);
IniItem *no_http_content_downloads = network->GetItem("no_http_content_downloads");
if (no_http_content_downloads != nullptr) {
if (no_http_content_downloads->value == "true") {
_settings_client.network.no_http_content_downloads = true;
@@ -2386,7 +2385,7 @@ void LoadFromConfig(bool startup)
}
}
IniItem *use_relay_service = network->GetItem("use_relay_service", false);
IniItem *use_relay_service = network->GetItem("use_relay_service");
if (use_relay_service != nullptr) {
if (use_relay_service->value == "never") {
_settings_client.network.use_relay_service = UseRelayService::URS_NEVER;