diff --git a/src/citymania/cm_station_gui.cpp b/src/citymania/cm_station_gui.cpp index a2aff5801e..6703fc71a5 100644 --- a/src/citymania/cm_station_gui.cpp +++ b/src/citymania/cm_station_gui.cpp @@ -678,4 +678,15 @@ std::string GetStationCoverageProductionText(TileIndex tile, int w, int h, int r return s.str(); } +/* enable/disable catchment area with ctrl+click on a station */ +void ShowCatchmentByClick(StationID station) +{ + if (_viewport_highlight_station != nullptr) { + if (_viewport_highlight_station == Station::Get(station)) + SetViewportCatchmentStation(Station::Get(station), false); + else SetViewportCatchmentStation(Station::Get(station), true); + } + else SetViewportCatchmentStation(Station::Get(station), true); +} + } // namespace citymania diff --git a/src/citymania/cm_station_gui.hpp b/src/citymania/cm_station_gui.hpp index b1739e55f4..89216ddc66 100644 --- a/src/citymania/cm_station_gui.hpp +++ b/src/citymania/cm_station_gui.hpp @@ -39,6 +39,7 @@ void SelectStationToJoin(const Station *station); void MarkCoverageHighlightDirty(); bool CheckRedrawStationCoverage(); void AbortStationPlacement(); +void ShowCatchmentByClick(StationID station); std::string GetStationCoverageProductionText(TileIndex tile, int w, int h, int rad, StationCoverageType sct); diff --git a/src/station_gui.cpp b/src/station_gui.cpp index df74f5fab9..fbeb455f88 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -2202,6 +2202,7 @@ static WindowDesc _station_view_desc(__FILE__, __LINE__, */ void ShowStationViewWindow(StationID station) { + if (_ctrl_pressed) citymania::ShowCatchmentByClick(station); else AllocateWindowDescFront(&_station_view_desc, station); }