From 84da7ad7b6e43e63448576c2848df151bd8fbad4 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 18 Aug 2022 19:42:13 +0100 Subject: [PATCH] Add setting to show group hierarchy in vehicle names See: #405 --- src/lang/english.txt | 3 +++ src/settings_gui.cpp | 1 + src/settings_type.h | 1 + src/strings.cpp | 6 ++++-- src/table/settings/settings.ini | 11 ++++++++++- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index d68b362812..d067da434b 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1638,6 +1638,9 @@ STR_CONFIG_SETTING_SHOW_ORDER_OCCUPANCY_BY_DEFAULT_HELPTEXT :Show detailed p STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME :Show group hierarchy in name: {STRING2} STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME_HELPTEXT :When enabled, group names include the full hierarchy of their parent group names +STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME :Show group hierarchy in vehicle names: {STRING2} +STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT :When enabled, and show group hierarchy in name is enabled, vehicle names which include a group name use the full group name with hierarchy + STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES :Enable signals on bridges/tunnels advanced modes: {STRING2} STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT :Enables use of advanced modes of signal simulation on bridges and tunnels. When disabled, bridges/tunnels which are not already in an advanced mode cannot be changed to an advanced mode, however other players may choose to enable this setting and use an advanced mode. diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 3241ed70e7..b23f434e60 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1938,6 +1938,7 @@ static SettingsContainer &GetSettingsTree() interface->Add(new SettingEntry("gui.disable_water_animation")); interface->Add(new SettingEntry("gui.show_order_occupancy_by_default")); interface->Add(new SettingEntry("gui.show_group_hierarchy_name")); + interface->Add(new ConditionallyHiddenSettingEntry("gui.show_vehicle_group_hierarchy_name", []() -> bool { return !_settings_client.gui.show_group_hierarchy_name; })); } SettingsPage *advisors = main->Add(new SettingsPage(STR_CONFIG_SETTING_ADVISORS)); diff --git a/src/settings_type.h b/src/settings_type.h index 6a8ec788eb..d860d1fef4 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -250,6 +250,7 @@ struct GUISettings : public TimeSettings { uint8 disable_water_animation; ///< Disable water animation depending on zoom level bool show_order_occupancy_by_default; ///< Show order occupancy by default in vehicle order window bool show_group_hierarchy_name; ///< Show the full hierarchy in group names + bool show_vehicle_group_hierarchy_name;///< Show the full group hierarchy in vehicle names uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity. uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed. diff --git a/src/strings.cpp b/src/strings.cpp index 50673590c7..72029eb760 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -1853,12 +1853,14 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg buff = GetStringWithArgs(buff, STR_JUST_RAW_STRING, &tmp_params, last); } else if (v->group_id != DEFAULT_GROUP && _settings_client.gui.vehicle_names != 0 && v->type < VEH_COMPANY_END) { /* The vehicle has no name, but is member of a group, so print group name */ + uint32 group_name = v->group_id; + if (_settings_client.gui.show_vehicle_group_hierarchy_name) group_name |= GROUP_NAME_HIERARCHY; if (_settings_client.gui.vehicle_names == 1) { - int64 args_array[] = {v->group_id, v->unitnumber}; + int64 args_array[] = {group_name, v->unitnumber}; StringParameters tmp_params(args_array); buff = GetStringWithArgs(buff, STR_FORMAT_GROUP_VEHICLE_NAME, &tmp_params, last); } else { - int64 args_array[] = {v->group_id, STR_TRADITIONAL_TRAIN_NAME + v->type, v->unitnumber}; + int64 args_array[] = {group_name, STR_TRADITIONAL_TRAIN_NAME + v->type, v->unitnumber}; StringParameters tmp_params(args_array); buff = GetStringWithArgs(buff, STR_FORMAT_GROUP_VEHICLE_NAME_LONG, &tmp_params, last); } diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini index 5abfb28483..99a68214ad 100644 --- a/src/table/settings/settings.ini +++ b/src/table/settings/settings.ini @@ -5557,9 +5557,18 @@ flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC def = false str = STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME strhelp = STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME_HELPTEXT -post_cb = [](auto) { MarkWholeScreenDirty(); } +post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); } cat = SC_BASIC +[SDTC_BOOL] +var = gui.show_vehicle_group_hierarchy_name +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC +def = false +str = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME +strhelp = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT +post_cb = [](auto) { MarkWholeScreenDirty(); } +cat = SC_ADVANCED + ; For the dedicated build we'll enable dates in logs by default. [SDTC_BOOL] ifdef = DEDICATED