Handle case where rail waypoint runs out of station spec slots

This commit is contained in:
Jonathan G Rennison
2022-02-09 02:13:46 +00:00
parent 2959221066
commit c040a69fec

View File

@@ -280,6 +280,10 @@ CommandCost CmdBuildRailWaypoint(TileIndex start_tile, DoCommandFlag flags, uint
if (!Waypoint::CanAllocateItem()) return_cmd_error(STR_ERROR_TOO_MANY_STATIONS_LOADING); if (!Waypoint::CanAllocateItem()) return_cmd_error(STR_ERROR_TOO_MANY_STATIONS_LOADING);
} }
/* Check if we can allocate a custom stationspec to this station */
int map_spec_index = AllocateSpecToStation(spec, wp, (flags & DC_EXEC) != 0);
if (map_spec_index == -1) return_cmd_error(STR_ERROR_TOO_MANY_STATION_SPECS);
if (flags & DC_EXEC) { if (flags & DC_EXEC) {
if (wp == nullptr) { if (wp == nullptr) {
wp = new Waypoint(start_tile); wp = new Waypoint(start_tile);
@@ -301,8 +305,6 @@ CommandCost CmdBuildRailWaypoint(TileIndex start_tile, DoCommandFlag flags, uint
wp->UpdateVirtCoord(); wp->UpdateVirtCoord();
byte map_spec_index = AllocateSpecToStation(spec, wp, true);
Company *c = Company::Get(wp->owner); Company *c = Company::Get(wp->owner);
for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) {
TileIndex tile = start_tile + i * offset; TileIndex tile = start_tile + i * offset;