mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Slightly simplify code in clear_cmd.cpp.
parent
4e026e448c
commit
1e0004bcd6
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue