Codechange: unify creation of diagonal/orthogonal iterator using smart pointers

This commit is contained in:
Rubidium
2023-01-13 17:19:25 +01:00
committed by rubidium42
parent 6a0d1c7c19
commit f667a831a5
7 changed files with 22 additions and 17 deletions

View File

@@ -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 };
}