diff options
author | frosch <frosch@openttd.org> | 2014-02-24 19:57:18 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2014-02-24 19:57:18 +0000 |
commit | a9acaf7a5e39d3430258f5192a0caefd25ead293 (patch) | |
tree | 3873213fae8d0469518e1468a620ab99b66411a9 /src | |
parent | 62b22bfd2b2a9d4d1e612ab0ec050e85358d5153 (diff) | |
download | openttd-a9acaf7a5e39d3430258f5192a0caefd25ead293.tar.xz |
(svn r26375) -Fix [FS#5929]: Station sizes > 8 were always allowed. (adf88)
Diffstat (limited to 'src')
-rw-r--r-- | src/rail_gui.cpp | 18 | ||||
-rw-r--r-- | src/station_cmd.cpp | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index c4fad3414..1808164c5 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -894,23 +894,27 @@ private: { if (statspec == NULL || _settings_client.gui.station_dragdrop) return; - /* If current number of tracks is not allowed, make it as big as possible (which is always less than currently selected) */ + /* If current number of tracks is not allowed, make it as big as possible */ if (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { this->RaiseWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); _settings_client.gui.station_numtracks = 1; - while (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { - _settings_client.gui.station_numtracks++; + if (statspec->disallowed_platforms != UINT8_MAX) { + while (HasBit(statspec->disallowed_platforms, _settings_client.gui.station_numtracks - 1)) { + _settings_client.gui.station_numtracks++; + } + this->LowerWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); } - this->LowerWidget(_settings_client.gui.station_numtracks + WID_BRAS_PLATFORM_NUM_BEGIN); } if (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { this->RaiseWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); _settings_client.gui.station_platlength = 1; - while (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { - _settings_client.gui.station_platlength++; + if (statspec->disallowed_lengths != UINT8_MAX) { + while (HasBit(statspec->disallowed_lengths, _settings_client.gui.station_platlength - 1)) { + _settings_client.gui.station_platlength++; + } + this->LowerWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); } - this->LowerWidget(_settings_client.gui.station_platlength + WID_BRAS_PLATFORM_LEN_BEGIN); } } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 341681124..1aa9ab0de 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1213,7 +1213,7 @@ CommandCost CmdBuildRailStation(TileIndex tile_org, DoCommandFlag flags, uint32 /* Perform NewStation checks */ /* Check if the station size is permitted */ - if (HasBit(statspec->disallowed_platforms, numtracks - 1) || HasBit(statspec->disallowed_lengths, plat_len - 1)) { + if (HasBit(statspec->disallowed_platforms, min(numtracks - 1, 7)) || HasBit(statspec->disallowed_lengths, min(plat_len - 1, 7))) { return CMD_ERROR; } |