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

@@ -758,7 +758,7 @@ std::tuple<CommandCost, Money> CmdClearArea(DoCommandFlag flags, TileIndex tile,
const Company *c = (flags & (DC_AUTO | DC_BANKRUPT)) ? nullptr : Company::GetIfValid(_current_company);
int limit = (c == nullptr ? INT32_MAX : GB(c->clear_limit, 16, 16));
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;
CommandCost ret = Command<CMD_LANDSCAPE_CLEAR>::Do(flags & ~DC_EXEC, t);
@@ -774,7 +774,6 @@ std::tuple<CommandCost, Money> CmdClearArea(DoCommandFlag flags, TileIndex tile,
if (flags & DC_EXEC) {
money -= ret.GetCost();
if (ret.GetCost() > 0 && money < 0) {
delete iter;
return { cost, ret.GetCost() };
}
Command<CMD_LANDSCAPE_CLEAR>::Do(flags, t);
@@ -794,7 +793,6 @@ std::tuple<CommandCost, Money> CmdClearArea(DoCommandFlag flags, TileIndex tile,
cost.AddCost(ret);
}
delete iter;
return { had_success ? cost : last_error, 0 };
}