diff options
author | planetmaker <planetmaker@openttd.org> | 2015-04-11 11:50:02 +0000 |
---|---|---|
committer | planetmaker <planetmaker@openttd.org> | 2015-04-11 11:50:02 +0000 |
commit | 84e5c5a9cb71ef1df1ded88d9ca424e48cb07dcb (patch) | |
tree | 1bc63ee3a91b8ea9b1cd39e82e42044b5c08f238 | |
parent | 5c80edb7edeb983d65d8fff73c057f0addc2fdb3 (diff) | |
download | openttd-84e5c5a9cb71ef1df1ded88d9ca424e48cb07dcb.tar.xz |
(svn r27225) -Change [FS#6262]: Be more lenient about road stop removal when at least one stop could be removed (afd88)
-rw-r--r-- | src/station_cmd.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 37b553f1a..43b5f8a6e 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2048,8 +2048,10 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui TileArea roadstop_area(tile, width, height); - int quantity = 0; CommandCost cost(EXPENSES_CONSTRUCTION); + CommandCost last_error(STR_ERROR_THERE_IS_NO_STATION); + bool had_success = false; + TILE_AREA_LOOP(cur_tile, roadstop_area) { /* Make sure the specified tile is a road stop of the correct type */ if (!IsTileType(cur_tile, MP_STATION) || !IsRoadStop(cur_tile) || (uint32)GetRoadStopType(cur_tile) != GB(p2, 0, 1)) continue; @@ -2064,10 +2066,13 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui Owner road_owner = GetRoadOwner(cur_tile, ROADTYPE_ROAD); Owner tram_owner = GetRoadOwner(cur_tile, ROADTYPE_TRAM); CommandCost ret = RemoveRoadStop(cur_tile, flags); - if (ret.Failed()) return ret; + if (ret.Failed()) { + last_error = ret; + continue; + } cost.AddCost(ret); + had_success = true; - quantity++; /* If the stop was a drive-through stop replace the road */ if ((flags & DC_EXEC) && is_drive_through) { MakeRoadNormal(cur_tile, road_bits, rts, ClosestTownFromTile(cur_tile, UINT_MAX)->index, @@ -2085,9 +2090,7 @@ CommandCost CmdRemoveRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, ui } } - if (quantity == 0) return_cmd_error(STR_ERROR_THERE_IS_NO_STATION); - - return cost; + return had_success ? cost : last_error; } /** |