mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
Add "Ghost" option for station sign visibility.
This commit is contained in:
parent
77f4d776c4
commit
b70438b76a
@ -457,6 +457,7 @@ STR_SETTINGS_MENU_STATION_NAMES_LORRY :Lorry stops
|
||||
STR_SETTINGS_MENU_STATION_NAMES_BUS :Bus stops
|
||||
STR_SETTINGS_MENU_STATION_NAMES_SHIP :Docks
|
||||
STR_SETTINGS_MENU_STATION_NAMES_PLANE :Airports
|
||||
STR_SETTINGS_MENU_STATION_NAMES_GHOST :Ghost
|
||||
STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Waypoint names displayed
|
||||
STR_SETTINGS_MENU_SIGNS_DISPLAYED :Signs displayed
|
||||
STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Competitor signs and names displayed
|
||||
|
@ -61,6 +61,9 @@ enum StationFacility : uint8_t {
|
||||
};
|
||||
DECLARE_ENUM_AS_BIT_SET(StationFacility)
|
||||
|
||||
/** Fake 'facility' to allow toggling display of recently-removed station signs. */
|
||||
static constexpr StationFacility FACIL_GHOST{1U << 6};
|
||||
|
||||
/** The vehicles that may have visited a station */
|
||||
enum StationHadVehicleOfType : uint8_t {
|
||||
HVOT_NONE = 0, ///< Station has seen no vehicles
|
||||
|
@ -12,7 +12,7 @@ extern std::string _config_language_file;
|
||||
|
||||
static constexpr std::initializer_list<const char*> _support8bppmodes{"no", "system", "hardware"};
|
||||
static constexpr std::initializer_list<const char*> _display_opt_modes{"SHOW_TOWN_NAMES", "SHOW_STATION_NAMES", "SHOW_SIGNS", "FULL_ANIMATION", "", "FULL_DETAIL", "WAYPOINTS", "SHOW_COMPETITOR_SIGNS"};
|
||||
static constexpr std::initializer_list<const char*> _facility_display_opt_modes{"TRAIN", "TRUCK_STOP", "BUS_STOP", "AIRPORT", "DOCK"};
|
||||
static constexpr std::initializer_list<const char*> _facility_display_opt_modes{"TRAIN", "TRUCK_STOP", "BUS_STOP", "AIRPORT", "DOCK", "", "GHOST"};
|
||||
|
||||
#ifdef WITH_COCOA
|
||||
extern bool _allow_hidpi_window;
|
||||
@ -69,7 +69,7 @@ full = _display_opt_modes
|
||||
name = ""facility_display_opt""
|
||||
type = SLE_UINT8
|
||||
var = _facility_display_opt
|
||||
def = (1 << FACIL_TRAIN | 1 << FACIL_TRUCK_STOP | 1 << FACIL_BUS_STOP | 1 << FACIL_AIRPORT | 1 << FACIL_DOCK)
|
||||
def = (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK | FACIL_GHOST)
|
||||
full = _facility_display_opt_modes
|
||||
|
||||
[SDTG_BOOL]
|
||||
|
@ -241,6 +241,7 @@ enum OptionMenuEntries {
|
||||
OME_SHOW_STATIONNAMES_BUS,
|
||||
OME_SHOW_STATIONNAMES_SHIP,
|
||||
OME_SHOW_STATIONNAMES_PLANE,
|
||||
OME_SHOW_STATIONNAMES_GHOST,
|
||||
OME_SHOW_WAYPOINTNAMES,
|
||||
OME_SHOW_SIGNS,
|
||||
OME_SHOW_COMPETITOR_SIGNS,
|
||||
@ -281,6 +282,7 @@ static CallBackFunction ToolbarOptionsClick(Window *w)
|
||||
list.push_back(MakeDropDownListCheckedItem((_facility_display_opt & FACIL_BUS_STOP) != 0, STR_SETTINGS_MENU_STATION_NAMES_BUS, OME_SHOW_STATIONNAMES_BUS, false, false, 1));
|
||||
list.push_back(MakeDropDownListCheckedItem((_facility_display_opt & FACIL_DOCK) != 0, STR_SETTINGS_MENU_STATION_NAMES_SHIP, OME_SHOW_STATIONNAMES_SHIP, false, false, 1));
|
||||
list.push_back(MakeDropDownListCheckedItem((_facility_display_opt & FACIL_AIRPORT) != 0, STR_SETTINGS_MENU_STATION_NAMES_PLANE, OME_SHOW_STATIONNAMES_PLANE, false, false, 1));
|
||||
list.push_back(MakeDropDownListCheckedItem((_facility_display_opt & FACIL_GHOST) != 0, STR_SETTINGS_MENU_STATION_NAMES_GHOST, OME_SHOW_STATIONNAMES_GHOST, false, false, 1));
|
||||
list.push_back(MakeDropDownListCheckedItem(HasBit(_display_opt, DO_SHOW_WAYPOINT_NAMES), STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED, OME_SHOW_WAYPOINTNAMES));
|
||||
list.push_back(MakeDropDownListCheckedItem(HasBit(_display_opt, DO_SHOW_SIGNS), STR_SETTINGS_MENU_SIGNS_DISPLAYED, OME_SHOW_SIGNS));
|
||||
list.push_back(MakeDropDownListCheckedItem(HasBit(_display_opt, DO_SHOW_COMPETITOR_SIGNS), STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS, OME_SHOW_COMPETITOR_SIGNS));
|
||||
@ -331,6 +333,7 @@ static CallBackFunction MenuClickSettings(int index)
|
||||
case OME_SHOW_STATIONNAMES_BUS: ToggleFacilityDisplay(FACIL_BUS_STOP); break;
|
||||
case OME_SHOW_STATIONNAMES_SHIP: ToggleFacilityDisplay(FACIL_DOCK); break;
|
||||
case OME_SHOW_STATIONNAMES_PLANE: ToggleFacilityDisplay(FACIL_AIRPORT); break;
|
||||
case OME_SHOW_STATIONNAMES_GHOST: ToggleFacilityDisplay(FACIL_GHOST); break;
|
||||
case OME_SHOW_WAYPOINTNAMES: ToggleBit(_display_opt, DO_SHOW_WAYPOINT_NAMES); break;
|
||||
case OME_SHOW_SIGNS: ToggleBit(_display_opt, DO_SHOW_SIGNS); break;
|
||||
case OME_SHOW_COMPETITOR_SIGNS:
|
||||
|
@ -1448,7 +1448,12 @@ static void ViewportAddKdtreeSigns(DrawPixelInfo *dpi)
|
||||
case ViewportSignKdtreeItem::VKI_STATION: {
|
||||
if (!show_stations) break;
|
||||
const BaseStation *st = BaseStation::Get(item.id.station);
|
||||
if ((_facility_display_opt & st->facilities) == 0) break;
|
||||
|
||||
/* If no facilities are present the station is a ghost station. */
|
||||
StationFacility facilities = st->facilities;
|
||||
if (facilities == FACIL_NONE) facilities = FACIL_GHOST;
|
||||
|
||||
if ((_facility_display_opt & facilities) == 0) break;
|
||||
|
||||
/* Don't draw if station is owned by another company and competitor station names are hidden. Stations owned by none are never ignored. */
|
||||
if (!show_competitors && _local_company != st->owner && st->owner != OWNER_NONE) break;
|
||||
|
Loading…
Reference in New Issue
Block a user