1
0
Fork 0

Codechange: Slightly simplify code in clear_cmd.cpp.

pull/12838/head
J0anJosep 2024-06-30 21:11:38 +02:00 committed by rubidium42
parent 4e026e448c
commit 1e0004bcd6
1 changed files with 13 additions and 31 deletions

View File

@ -144,27 +144,11 @@ static void UpdateFences(TileIndex tile)
assert(IsTileType(tile, MP_CLEAR) && IsClearGround(tile, CLEAR_FIELDS)); assert(IsTileType(tile, MP_CLEAR) && IsClearGround(tile, CLEAR_FIELDS));
bool dirty = false; bool dirty = false;
bool neighbour = (IsTileType(TileAddXY(tile, 1, 0), MP_CLEAR) && IsClearGround(TileAddXY(tile, 1, 0), CLEAR_FIELDS)); for (DiagDirection dir = DIAGDIR_BEGIN; dir < DIAGDIR_END; dir++) {
if (!neighbour && GetFence(tile, DIAGDIR_SW) == 0) { if (GetFence(tile, dir) != 0) continue;
SetFence(tile, DIAGDIR_SW, 3); TileIndex neighbour = tile + TileOffsByDiagDir(dir);
dirty = true; if (IsTileType(neighbour, MP_CLEAR) && IsClearGround(neighbour, CLEAR_FIELDS)) continue;
} SetFence(tile, dir, 3);
neighbour = (IsTileType(TileAddXY(tile, 0, 1), MP_CLEAR) && IsClearGround(TileAddXY(tile, 0, 1), CLEAR_FIELDS));
if (!neighbour && GetFence(tile, DIAGDIR_SE) == 0) {
SetFence(tile, DIAGDIR_SE, 3);
dirty = true;
}
neighbour = (IsTileType(TileAddXY(tile, -1, 0), MP_CLEAR) && IsClearGround(TileAddXY(tile, -1, 0), CLEAR_FIELDS));
if (!neighbour && GetFence(tile, DIAGDIR_NE) == 0) {
SetFence(tile, DIAGDIR_NE, 3);
dirty = true;
}
neighbour = (IsTileType(TileAddXY(tile, 0, -1), MP_CLEAR) && IsClearGround(TileAddXY(tile, 0, -1), CLEAR_FIELDS));
if (!neighbour && GetFence(tile, DIAGDIR_NW) == 0) {
SetFence(tile, DIAGDIR_NW, 3);
dirty = true; dirty = true;
} }
@ -177,30 +161,28 @@ static void TileLoopClearAlps(TileIndex tile)
{ {
int k = GetTileZ(tile) - GetSnowLine() + 1; int k = GetTileZ(tile) - GetSnowLine() + 1;
if (k < 0) {
/* Below the snow line, do nothing if no snow. */
if (!IsSnowTile(tile)) return;
} else {
/* At or above the snow line, make snow tile if needed. */
if (!IsSnowTile(tile)) { if (!IsSnowTile(tile)) {
/* Below the snow line, do nothing if no snow. */
/* At or above the snow line, make snow tile if needed. */
if (k >= 0) {
MakeSnow(tile); MakeSnow(tile);
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);
}
return; return;
} }
}
/* Update snow density. */ /* Update snow density. */
uint current_density = GetClearDensity(tile); uint current_density = GetClearDensity(tile);
uint req_density = (k < 0) ? 0u : std::min<uint>(k, 3u); uint req_density = (k < 0) ? 0u : std::min<uint>(k, 3u);
if (current_density < req_density) { if (current_density == req_density) {
AddClearDensity(tile, 1);
} else if (current_density > req_density) {
AddClearDensity(tile, -1);
} else {
/* Density at the required level. */ /* Density at the required level. */
if (k >= 0) return; if (k >= 0) return;
ClearSnow(tile); ClearSnow(tile);
} else {
AddClearDensity(tile, current_density < req_density ? 1 : -1);
} }
MarkTileDirtyByTile(tile); MarkTileDirtyByTile(tile);
} }