|
|
|
@ -361,7 +361,7 @@ std::tuple<CommandCost, Money, TileIndex> CmdLevelLand(DoCommandFlag flags, Tile
|
|
|
|
|
if (limit == 0) return { CommandCost(STR_ERROR_TERRAFORM_LIMIT_REACHED), 0, INVALID_TILE };
|
|
|
|
|
|
|
|
|
|
TileIndex error_tile = INVALID_TILE;
|
|
|
|
|
TileIterator *iter = diagonal ? (TileIterator *)new DiagonalTileIterator(tile, start_tile) : new OrthogonalTileIterator(tile, start_tile);
|
|
|
|
|
std::unique_ptr<TileIterator> iter = TileIterator::Create(tile, start_tile, diagonal);
|
|
|
|
|
for (; *iter != INVALID_TILE; ++(*iter)) {
|
|
|
|
|
TileIndex t = *iter;
|
|
|
|
|
uint curh = TileHeight(t);
|
|
|
|
@ -379,7 +379,6 @@ std::tuple<CommandCost, Money, TileIndex> CmdLevelLand(DoCommandFlag flags, Tile
|
|
|
|
|
if (flags & DC_EXEC) {
|
|
|
|
|
money -= ret.GetCost();
|
|
|
|
|
if (money < 0) {
|
|
|
|
|
delete iter;
|
|
|
|
|
return { cost, ret.GetCost(), error_tile };
|
|
|
|
|
}
|
|
|
|
|
Command<CMD_TERRAFORM_LAND>::Do(flags, t, SLOPE_N, curh <= h);
|
|
|
|
@ -403,7 +402,6 @@ std::tuple<CommandCost, Money, TileIndex> CmdLevelLand(DoCommandFlag flags, Tile
|
|
|
|
|
if (limit <= 0) break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
delete iter;
|
|
|
|
|
CommandCost cc_ret = had_success ? cost : last_error;
|
|
|
|
|
return { cc_ret, 0, cc_ret.Succeeded() ? tile : error_tile };
|
|
|
|
|
}
|
|
|
|
|