mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 10:30:28 +00:00
(svn r21481) -Codechange: make rail conversion make use of TILE_AREA_LOOP as well
This commit is contained in:
parent
90e247c84d
commit
a1d923700f
@ -1397,22 +1397,12 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
|||||||
if (!ValParamRailtype(totype)) return CMD_ERROR;
|
if (!ValParamRailtype(totype)) return CMD_ERROR;
|
||||||
if (p1 >= MapSize()) return CMD_ERROR;
|
if (p1 >= MapSize()) return CMD_ERROR;
|
||||||
|
|
||||||
uint ex = TileX(tile);
|
|
||||||
uint ey = TileY(tile);
|
|
||||||
uint sx = TileX(p1);
|
|
||||||
uint sy = TileY(p1);
|
|
||||||
|
|
||||||
/* make sure sx,sy are smaller than ex,ey */
|
|
||||||
if (ex < sx) Swap(ex, sx);
|
|
||||||
if (ey < sy) Swap(ey, sy);
|
|
||||||
|
|
||||||
TrainList affected_trains;
|
TrainList affected_trains;
|
||||||
|
|
||||||
CommandCost cost(EXPENSES_CONSTRUCTION);
|
CommandCost cost(EXPENSES_CONSTRUCTION);
|
||||||
CommandCost error = CommandCost(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); // by default, there is no track to convert.
|
CommandCost error = CommandCost(STR_ERROR_NO_SUITABLE_RAILROAD_TRACK); // by default, there is no track to convert.
|
||||||
for (uint x = sx; x <= ex; ++x) {
|
TileArea ta(tile, p1);
|
||||||
for (uint y = sy; y <= ey; ++y) {
|
TILE_AREA_LOOP(tile, ta) {
|
||||||
TileIndex tile = TileXY(x, y);
|
|
||||||
TileType tt = GetTileType(tile);
|
TileType tt = GetTileType(tile);
|
||||||
|
|
||||||
/* Check if there is any track on tile */
|
/* Check if there is any track on tile */
|
||||||
@ -1512,8 +1502,8 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
|||||||
|
|
||||||
/* If both ends of tunnel/bridge are in the range, do not try to convert twice -
|
/* If both ends of tunnel/bridge are in the range, do not try to convert twice -
|
||||||
* it would cause assert because of different test and exec runs */
|
* it would cause assert because of different test and exec runs */
|
||||||
if (endtile < tile && TileX(endtile) >= sx && TileX(endtile) <= ex &&
|
if (endtile < tile && TileX(endtile) >= TileX(ta.tile) && TileX(endtile) < TileX(ta.tile) + ta.w &&
|
||||||
TileY(endtile) >= sy && TileY(endtile) <= ey) continue;
|
TileY(endtile) >= TileY(ta.tile) && TileY(endtile) < TileY(ta.tile) + ta.h) continue;
|
||||||
|
|
||||||
/* When not coverting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */
|
/* When not coverting rail <-> el. rail, any vehicle cannot be in tunnel/bridge */
|
||||||
if (!IsCompatibleRail(GetRailType(tile), totype)) {
|
if (!IsCompatibleRail(GetRailType(tile), totype)) {
|
||||||
@ -1571,7 +1561,6 @@ CommandCost CmdConvertRail(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3
|
|||||||
TryPathReserve(vehicles_affected[i], true);
|
TryPathReserve(vehicles_affected[i], true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
/* Railtype changed, update trains as when entering different track */
|
/* Railtype changed, update trains as when entering different track */
|
||||||
|
Loading…
Reference in New Issue
Block a user