From ef9f3ff86fdc3471cae5a1c85fa90e8321a4273b Mon Sep 17 00:00:00 2001 From: dP Date: Fri, 19 Mar 2021 17:56:30 +0300 Subject: [PATCH] Fall back to regular(non-improved)) station joining if distant join is not allowed --- src/airport_gui.cpp | 2 +- src/citymania/cm_station_gui.cpp | 4 ++++ src/citymania/cm_station_gui.hpp | 2 +- src/dock_gui.cpp | 2 +- src/lang/english.txt | 2 +- src/rail_gui.cpp | 6 +++--- src/road_gui.cpp | 4 ++-- src/station_gui.cpp | 2 +- 8 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index d7acfbdad9..b730e95f91 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -57,7 +57,7 @@ void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 */ static void PlaceAirport(TileIndex tile) { - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { citymania::PlaceAirport(tile); return; } diff --git a/src/citymania/cm_station_gui.cpp b/src/citymania/cm_station_gui.cpp index 62e90a3905..9081559912 100644 --- a/src/citymania/cm_station_gui.cpp +++ b/src/citymania/cm_station_gui.cpp @@ -70,6 +70,10 @@ TileArea _highlight_join_area; // _station_select.catchment = catchment; // } +bool UseImprovedStationJoin() { + return _settings_client.gui.cm_use_improved_station_join && _settings_game.station.distant_join_stations; +} + void SetStationBiildingStatus(StationBuildingStatus status) { _station_building_status = status; }; diff --git a/src/citymania/cm_station_gui.hpp b/src/citymania/cm_station_gui.hpp index 22fe0b2f01..b4288e98d5 100644 --- a/src/citymania/cm_station_gui.hpp +++ b/src/citymania/cm_station_gui.hpp @@ -17,7 +17,7 @@ enum class StationBuildingStatus { // void SetStationBiildingStatus(StationBuildingStatus status); // void SetStationTileSelectSize(int w, int h, int catchment); - +bool UseImprovedStationJoin(); void OnStationTileSetChange(const Station *station, bool adding, StationType type); void OnStationPartBuilt(const Station *station, TileIndex tile, uint32 p1, uint32 p2); void PlaceRoadStop(TileIndex start_tile, TileIndex end_tile, uint32 p2, uint32 cmd); diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 58cf897bfa..82aac13b1e 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -198,7 +198,7 @@ struct BuildDocksToolbarWindow : Window { case WID_DT_STATION: { // Build station button - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { citymania::PlaceDock(tile); break; } diff --git a/src/lang/english.txt b/src/lang/english.txt index f070ed7f5c..c849baa9e1 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1449,7 +1449,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the buildi STR_CONFIG_SETTING_PERSISTENT_DEPOTTOOLS :Keep depot building tools active after usage: {STRING2} STR_CONFIG_SETTING_PERSISTENT_DEPOTTOOLS_HELPTEXT :Keep the building tools for road, train and ship depots (reversible by placing with Ctrl). STR_CM_CONFIG_SETTING_IMPROVED_STATION_JOIN :Use improved station joining controls: {STRING2} -STR_CM_CONFIG_SETTING_IMPROVED_STATION_JOIN_HELPTEXT :Use Ctrl-click on station tile to select or deselect station to join. If station has no tiles Ctrl-click its sign. Ctrl-click empty tile for a new station. Also recently built station is automatically selected as a station to join. +STR_CM_CONFIG_SETTING_IMPROVED_STATION_JOIN_HELPTEXT :Use Ctrl-click on station tile to select or deselect station to join. If station has no tiles Ctrl-click its sign. Ctrl-click empty tile for a new station. Also recently built station is automatically selected as a station to join. {RED}Does't work if joining stations not directly adjacent(distant join) is not allowed in settings. STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses in company finance window: {STRING2} STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index c5cf84bd2e..fdf66fcf4f 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -210,7 +210,7 @@ static void PlaceRail_Station(TileIndex tile) VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_BUILD_STATION); VpSetPlaceSizingLimit(_settings_game.station.station_spread); } else { - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { citymania::PlaceRail_Station(tile); return; } @@ -1077,7 +1077,7 @@ Window *ShowBuildRailToolbar(RailType railtype) static void HandleStationPlacement(TileIndex start, TileIndex end) { - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { citymania::HandleStationPlacement(start, end); return; } @@ -1223,7 +1223,7 @@ public: int rad = (_settings_game.station.modified_catchment) ? CA_TRAIN : CA_UNMODIFIED; - if (_settings_client.gui.cm_use_improved_station_join || _settings_client.gui.station_show_coverage) + if (citymania::UseImprovedStationJoin() || _settings_client.gui.station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); for (uint bits = 0; bits < 7; bits++) { diff --git a/src/road_gui.cpp b/src/road_gui.cpp index bda7cc005c..2e65e94aa7 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -289,7 +289,7 @@ DiagDirection AutodetectDriveThroughRoadStopDirection(TileArea area) { */ static void PlaceRoadStop(TileIndex start_tile, TileIndex end_tile, uint32 p2, uint32 cmd) { - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { citymania::PlaceRoadStop(start_tile, end_tile, p2, cmd); return; } @@ -1270,7 +1270,7 @@ struct BuildRoadStationWindow : public PickerWindowBase { int rad = _settings_game.station.modified_catchment ? ((this->window_class == WC_BUS_STATION) ? CA_BUS : CA_TRUCK) : CA_UNMODIFIED; SetTileSelectSize(1, 1); - if (_settings_client.gui.cm_use_improved_station_join || _settings_client.gui.station_show_coverage) + if (citymania::UseImprovedStationJoin() || _settings_client.gui.station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad); /* 'Accepts' and 'Supplies' texts. */ diff --git a/src/station_gui.cpp b/src/station_gui.cpp index 1f850ee627..14bf9dd3a4 100644 --- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -154,7 +154,7 @@ static void FindStationsAroundSelection() void CheckRedrawStationCoverage(const Window *w) { /* CityMania code begin */ - if (_settings_client.gui.cm_use_improved_station_join) { + if (citymania::UseImprovedStationJoin()) { if (citymania::CheckRedrawStationCoverage()) w->SetDirty(); return; }