summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clear.h12
-rw-r--r--landscape.c14
-rw-r--r--terraform_gui.c3
-rw-r--r--tree_cmd.c8
4 files changed, 18 insertions, 19 deletions
diff --git a/clear.h b/clear.h
index 856fb6e7b..819527d95 100644
--- a/clear.h
+++ b/clear.h
@@ -4,6 +4,7 @@
#define CLEAR_H
#include "macros.h"
+#include "tile.h"
/* ground type, m5 bits 2...4
* valid densities (bits 0...1) in comments after the enum
@@ -43,4 +44,15 @@ static inline void SetFenceSE(TileIndex t, uint h) { SB(_m[t].m4, 2, 3, h); }
static inline uint GetFenceSW(TileIndex t) { return GB(_m[t].m4, 5, 3); }
static inline void SetFenceSW(TileIndex t, uint h) { SB(_m[t].m4, 5, 3, h); }
+
+static inline void MakeClear(TileIndex t, ClearGround g, uint density)
+{
+ SetTileType(t, MP_CLEAR);
+ SetTileOwner(t, OWNER_NONE);
+ _m[t].m2 = 0;
+ _m[t].m3 = 0;
+ _m[t].m4 = 0 << 5 | 0 << 2;
+ _m[t].m5 = 0 << 5 | g << 2 | density;
+}
+
#endif
diff --git a/landscape.c b/landscape.c
index b96c98491..8c01aa524 100644
--- a/landscape.c
+++ b/landscape.c
@@ -239,12 +239,7 @@ void DrawFoundation(TileInfo *ti, uint f)
void DoClearSquare(TileIndex tile)
{
- SetTileType(tile, MP_CLEAR);
- SetTileOwner(tile, OWNER_NONE);
- _m[tile].m2 = 0;
- _m[tile].m3 = 0;
- _m[tile].m4 = 0;
- SetClearGroundDensity(tile, CL_GRASS, _generating_world ? 3 : 0);
+ MakeClear(tile, CL_GRASS, _generating_world ? 3 : 0);
MarkTileDirtyByTile(tile);
}
@@ -438,12 +433,7 @@ void InitializeLandscape(void)
map_size = MapSize();
for (i = 0; i < map_size; i++) {
- _m[i].type_height = MP_CLEAR << 4;
- _m[i].m1 = OWNER_NONE;
- _m[i].m2 = 0;
- _m[i].m3 = 0;
- _m[i].m4 = 0;
- _m[i].m5 = 3;
+ MakeClear(i, CL_GRASS, 3);
_m[i].extra = 0;
}
diff --git a/terraform_gui.c b/terraform_gui.c
index 02d6f9490..eeda59bed 100644
--- a/terraform_gui.c
+++ b/terraform_gui.c
@@ -82,8 +82,7 @@ static void GenerateRockyArea(TileIndex end, TileIndex start)
BEGIN_TILE_LOOP(tile, size_x, size_y, TileXY(sx, sy)) {
if (IsTileType(tile, MP_CLEAR) || IsTileType(tile, MP_TREES)) {
- SetTileType(tile, MP_CLEAR);
- SetClearGroundDensity(tile, CL_ROCKS, 3);
+ MakeClear(tile, CL_ROCKS, 3);
MarkTileDirtyByTile(tile);
success = true;
}
diff --git a/tree_cmd.c b/tree_cmd.c
index 076e1efdb..49a2245a8 100644
--- a/tree_cmd.c
+++ b/tree_cmd.c
@@ -515,12 +515,10 @@ static void TileLoop_Trees(TileIndex tile)
SetTreeGrowth(tile, 3);
} else {
/* just one tree, change type into MP_CLEAR */
- SetTileType(tile, MP_CLEAR);
- SetTileOwner(tile, OWNER_NONE);
switch (GetTreeGround(tile)) {
- case TR_GRASS: SetClearGroundDensity(tile, CL_GRASS, 3); break;
- case TR_ROUGH: SetClearGroundDensity(tile, CL_ROUGH, 3); break;
- default: SetClearGroundDensity(tile, CL_SNOW, GetTreeDensity(tile)); break;
+ case TR_GRASS: MakeClear(tile, CL_GRASS, 3); break;
+ case TR_ROUGH: MakeClear(tile, CL_ROUGH, 3); break;
+ default: MakeClear(tile, CL_SNOW, GetTreeDensity(tile)); break;
}
}
break;