diff --git a/src/lang/extra/english.txt b/src/lang/extra/english.txt index f50b551b0f..f2e84bcf9c 100644 --- a/src/lang/extra/english.txt +++ b/src/lang/extra/english.txt @@ -2121,6 +2121,12 @@ STR_CONFIG_SETTING_INTERFACE_TOOLTIPS :{ORANGE}Tooltip STR_CONFIG_SETTING_INSTANT_TILE_TOOLTIP :Show viewport tooltips for tiles without a right-click: {STRING2} STR_CONFIG_SETTING_INSTANT_TILE_TOOLTIP_HELPTEXT :Show viewport tooltips for tile types such as industries without requiring a right-click, when the show tooltips setting is set to right-click. +STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE :Show viewport tooltips with town names: {STRING2} +STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_HELPTEXT :Show viewport tooltips for road and house tiles that belong to towns. +STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_OFF :Off +STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_ON_IF_HIDDEN :On, if town names are hidden +STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_ALWAYS_ON :Always on + STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE :Station rating tooltips: {STRING2} STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :Set whether station rating tooltips are shown and the level of information detail. STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :Off diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index b9fed63c4e..6898b11d05 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -1933,6 +1933,7 @@ static SettingsContainer &GetSettingsTree() { tooltips->Add(new SettingEntry("gui.hover_delay_ms")); tooltips->Add(new ConditionallyHiddenSettingEntry("gui.instant_tile_tooltip", []() -> bool { return _settings_client.gui.hover_delay_ms != 0; })); + tooltips->Add(new SettingEntry("gui.town_name_tooltip_mode")); tooltips->Add(new SettingEntry("gui.station_rating_tooltip_mode")); } diff --git a/src/settings_type.h b/src/settings_type.h index 977025fcca..e8f5e4e189 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -133,6 +133,7 @@ struct GUISettings : public TimeSettings { byte errmsg_duration; ///< duration of error message uint16 hover_delay_ms; ///< time required to activate a hover event, in milliseconds bool instant_tile_tooltip; ///< don't require a right click to activate a hover event to show a tooltip for an in-game tile (e.g. industry). + uint8 town_name_tooltip_mode; ///< when to display town names when hovering over roads and houses. (0 = never, 1 = only if town names are hidden, 2 = always) uint8 station_rating_tooltip_mode; ///< Station rating tooltip mode bool link_terraform_toolbar; ///< display terraform toolbar when displaying rail, road, water and airport toolbars uint8 smallmap_land_colour; ///< colour used for land and heightmap at the smallmap diff --git a/src/table/settings/settings.ini b/src/table/settings/settings.ini index 4f6aaad6f6..a5bee9dc01 100644 --- a/src/table/settings/settings.ini +++ b/src/table/settings/settings.ini @@ -4552,6 +4552,17 @@ def = false str = STR_CONFIG_SETTING_INSTANT_TILE_TOOLTIP strhelp = STR_CONFIG_SETTING_INSTANT_TILE_TOOLTIP_HELPTEXT +[SDTC_VAR] +var = gui.town_name_tooltip_mode +type = SLE_UINT8 +flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN +def = 1 +min = 0 +max = 2 +str = STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE +strhelp = STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_HELPTEXT +strval = STR_CONFIG_SETTING_TOWN_NAME_TOOLTIP_MODE_OFF + [SDTC_VAR] var = gui.station_rating_tooltip_mode type = SLE_UINT8 diff --git a/src/viewport_gui.cpp b/src/viewport_gui.cpp index feb961069d..6329fed9dc 100644 --- a/src/viewport_gui.cpp +++ b/src/viewport_gui.cpp @@ -219,6 +219,20 @@ void ShowExtraViewportWindowForTileUnderCursor() ShowExtraViewportWindow(pt.x != -1 ? TileVirtXY(pt.x, pt.y) : INVALID_TILE); } +enum TownNameTooltipMode : uint8 { + TNTM_OFF, + TNTM_ON_IF_HIDDEN, + TNTM_ALWAYS_ON +}; + +void ShowTownNameTooltip(Window *w, const TileIndex tile) +{ + if (_settings_client.gui.town_name_tooltip_mode == TNTM_OFF) return; + if (HasBit(_display_opt, DO_SHOW_TOWN_NAMES) && _settings_client.gui.town_name_tooltip_mode == TNTM_ON_IF_HIDDEN) return; // No need for a town name tooltip when it is already displayed + SetDParam(0, GetTownIndex(tile)); + GuiShowTooltips(w, STR_TOWN_NAME_TOOLTIP, 0, nullptr, TCC_HOVER_VIEWPORT); +} + void ShowTooltipForTile(Window *w, const TileIndex tile) { switch (GetTileType(tile)) { @@ -226,9 +240,7 @@ void ShowTooltipForTile(Window *w, const TileIndex tile) if (IsRoadDepot(tile)) return; /* FALL THROUGH */ case MP_HOUSE: { - if (HasBit(_display_opt, DO_SHOW_TOWN_NAMES)) return; // No need for a town name tooltip when it is already displayed - SetDParam(0, GetTownIndex(tile)); - GuiShowTooltips(w, STR_TOWN_NAME_TOOLTIP, 0, nullptr, TCC_HOVER_VIEWPORT); + ShowTownNameTooltip(w, tile); break; } case MP_INDUSTRY: {