diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 88650aeeb1..2b67a826db 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -137,6 +137,8 @@ void SetLocalCompany(CompanyID new_company) InvalidateWindowClassesData(WC_VEHICLE_VIEW); /* Delete any construction windows... */ CloseConstructionWindows(); + /* Update the default rail based on most used */ + SetDefaultRailGui(); } /* ... and redraw the whole screen. */ diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 644ca5aed8..2db8bed669 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -1983,7 +1983,7 @@ void ReinitGuiAfterToggleElrail(bool disable) } /** Set the initial (default) railtype to use */ -static void SetDefaultRailGui() +void SetDefaultRailGui() { if (_local_company == COMPANY_SPECTATOR || !Company::IsValidID(_local_company)) return; @@ -1993,8 +1993,8 @@ static void SetDefaultRailGui() /* Find the most used rail type */ std::array count{}; for (const auto t : Map::Iterate()) { - if (IsTileType(t, TileType::Railway) || IsLevelCrossingTile(t) || HasStationTileRail(t) || - (IsTileType(t, TileType::TunnelBridge) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) { + if ((IsTileType(t, TileType::Railway) || IsLevelCrossingTile(t) || HasStationTileRail(t) || + (IsTileType(t, TileType::TunnelBridge) && GetTunnelBridgeTransportType(t) == TRANSPORT_RAIL)) && IsTileOwner(t, _local_company)) { count[GetRailType(t)]++; } } diff --git a/src/rail_gui.h b/src/rail_gui.h index 7e75b05b9c..7078163349 100644 --- a/src/rail_gui.h +++ b/src/rail_gui.h @@ -18,6 +18,7 @@ void ReinitGuiAfterToggleElrail(bool disable); void ResetSignalVariant(int32_t = 0); void InitializeRailGUI(); DropDownList GetRailTypeDropDownList(bool for_replacement = false, bool all_option = false); +void SetDefaultRailGui(); /** Settings for which signals are shown by the signal GUI. */ enum SignalGUISettings : uint8_t {