summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortron <tron@openttd.org>2005-01-16 14:50:01 +0000
committertron <tron@openttd.org>2005-01-16 14:50:01 +0000
commit022b8cea37b1ae1a3a1745c5373d202a7f267a2d (patch)
tree187e8c5437b91c17d0f652b2f0d01e30fbd131b4
parent8e404a26f65b8851b3dcf067fddf62f188005ee9 (diff)
downloadopenttd-022b8cea37b1ae1a3a1745c5373d202a7f267a2d.tar.xz
(svn r1545) Add TileHeight() which returns the height (not multiplied by 8)
Replace some direct references to _map_type_and_height with TileHeight()/IsTileType()
-rw-r--r--clear_cmd.c16
-rw-r--r--disaster_cmd.c2
-rw-r--r--landscape.c13
-rw-r--r--main_gui.c6
-rw-r--r--map.h9
-rw-r--r--smallmap_gui.c2
6 files changed, 26 insertions, 22 deletions
diff --git a/clear_cmd.c b/clear_cmd.c
index 39ebff4d7..bc6c89e84 100644
--- a/clear_cmd.c
+++ b/clear_cmd.c
@@ -52,7 +52,7 @@ static int TerraformGetHeightOfTile(TerraformerState *ts, TileIndex tile)
return mod->height;
}
- return _map_type_and_height[tile] & 0xF;
+ return TileHeight(tile);
}
static void TerraformAddDirtyTile(TerraformerState *ts, TileIndex tile)
@@ -91,7 +91,7 @@ static int TerraformProc(TerraformerState *ts, uint tile, int mode)
if ((r=TerraformAllowTileProcess(ts, tile)) <= 0)
return r;
- if ((_map_type_and_height[tile] >> 4) == MP_RAILWAY) {
+ if (IsTileType(tile, MP_RAILWAY)) {
static const byte _railway_modes[4] = {8, 0x10, 4, 0x20};
static const byte _railway_dangslopes[4] = {0xd, 0xe, 7, 0xb};
static const byte _railway_dangslopes2[4] = {0x2, 0x1, 0x8, 0x4};
@@ -239,25 +239,25 @@ int32 CmdTerraformLand(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (p1 & 1) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,0),
- (_map_type_and_height[tile+TILE_XY(1,0)]&0xF) + direction))
+ TileHeight(tile + TILE_XY(1, 0)) + direction))
return CMD_ERROR;
}
if (p1 & 2) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(1,1),
- (_map_type_and_height[tile+TILE_XY(1,1)]&0xF) + direction))
+ TileHeight(tile + TILE_XY(1, 1)) + direction))
return CMD_ERROR;
}
if (p1 & 4) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,1),
- (_map_type_and_height[tile+TILE_XY(0,1)]&0xF) + direction))
+ TileHeight(tile + TILE_XY(0, 1)) + direction))
return CMD_ERROR;
}
if (p1 & 8) {
if (!TerraformTileHeight(&ts, tile+TILE_XY(0,0),
- (_map_type_and_height[tile+TILE_XY(0,0)]&0xF) + direction))
+ TileHeight(tile + TILE_XY(0, 0)) + direction))
return CMD_ERROR;
}
@@ -338,7 +338,7 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
// remember level height
- h = _map_type_and_height[p1]&0xF;
+ h = TileHeight(p1);
ex >>= 4; ey >>= 4;
@@ -356,7 +356,7 @@ int32 CmdLevelLand(int ex, int ey, uint32 flags, uint32 p1, uint32 p2)
cost = 0;
BEGIN_TILE_LOOP(tile2, size_x, size_y, tile)
- curh = _map_type_and_height[tile2]&0xF;
+ curh = TileHeight(tile2);
while (curh != h) {
ret = DoCommandByTile(tile2, 8, (curh > h)?0:1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND);
if (ret == CMD_ERROR) break;
diff --git a/disaster_cmd.c b/disaster_cmd.c
index d6d10bf0c..0c28ddc0a 100644
--- a/disaster_cmd.c
+++ b/disaster_cmd.c
@@ -20,7 +20,7 @@ static void DisasterClearSquare(uint tile)
if (!EnsureNoVehicle(tile))
return;
- type = _map_type_and_height[tile] >> 4;
+ type = TileType(tile);
if (type == MP_RAILWAY) {
if (IS_HUMAN_PLAYER(_map_owner[tile]))
diff --git a/landscape.c b/landscape.c
index c40dd4c1a..1a490a897 100644
--- a/landscape.c
+++ b/landscape.c
@@ -53,12 +53,12 @@ uint GetTileSlope(uint tile, int *h)
assert(tile < MapSize() && TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY());
- min = a = _map_type_and_height[tile] & 0xF;
- b = _map_type_and_height[tile+TILE_XY(1,0)] & 0xF;
+ min = a = TileHeight(tile);
+ b = TileHeight(tile + TILE_XY(1,0));
if (min >= b) min = b;
- c = _map_type_and_height[tile+TILE_XY(0,1)] & 0xF;
+ c = TileHeight(tile + TILE_XY(0,1));
if (min >= c) min = c;
- d = _map_type_and_height[tile+TILE_XY(1,1)] & 0xF;
+ d = TileHeight(tile + TILE_XY(1,1));
if (min >= d) min = d;
r = 0;
@@ -634,14 +634,13 @@ static void CreateDesertOrRainForest()
{
uint tile;
const TileIndexDiffC *data;
- byte mt;
int i;
for (tile = 0; tile != MapSize(); ++tile) {
for (data = _make_desert_or_rainforest_data;
data != endof(_make_desert_or_rainforest_data); ++data) {
- mt = _map_type_and_height[TILE_MASK(tile + ToTileIndexDiff(*data))];
- if ((mt & 0xf) >= 4 || (mt >> 4) == MP_WATER) break;
+ TileIndex t = tile + ToTileIndexDiff(*data);
+ if (TileHeight(t) >= 4 || IsTileType(t, MP_WATER)) break;
}
if (data == endof(_make_desert_or_rainforest_data))
SetMapExtraBits(tile, 1);
diff --git a/main_gui.c b/main_gui.c
index 5922c4557..00452e109 100644
--- a/main_gui.c
+++ b/main_gui.c
@@ -1147,18 +1147,18 @@ static void CommonRaiseLowerBigLand(uint tile, int mode)
/* Raise land */
h = 15;
BEGIN_TILE_LOOP(tile2, size, size, tile)
- h = min(h, _map_type_and_height[tile2]&0xF);
+ h = min(h, TileHeight(tile2));
END_TILE_LOOP(tile2, size, size, tile)
} else {
/* Lower land */
h = 0;
BEGIN_TILE_LOOP(tile2, size, size, tile)
- h = max(h, _map_type_and_height[tile2]&0xF);
+ h = max(h, TileHeight(tile2));
END_TILE_LOOP(tile2, size, size, tile)
}
BEGIN_TILE_LOOP(tile2, size, size, tile)
- if ((uint)(_map_type_and_height[tile2]&0xF) == h) {
+ if (TileHeight(tile2) == h) {
DoCommandP(tile2, 8, (uint32)mode, NULL, CMD_TERRAFORM_LAND | CMD_AUTO);
}
END_TILE_LOOP(tile2, size, size, tile)
diff --git a/map.h b/map.h
index a2d37e755..126bdd0b3 100644
--- a/map.h
+++ b/map.h
@@ -73,10 +73,15 @@ static inline TileIndexDiff TileOffsByDir(uint dir)
}
-static inline uint TilePixelHeight(TileIndex tile)
+static inline uint TileHeight(TileIndex tile)
{
assert(tile < MapSize());
- return (_map_type_and_height[tile] & 0xf) * 8;
+ return _map_type_and_height[tile] & 0xf;
+}
+
+static inline uint TilePixelHeight(TileIndex tile)
+{
+ return TileHeight(tile) * 8;
}
static inline int TileType(TileIndex tile)
diff --git a/smallmap_gui.c b/smallmap_gui.c
index 0f8c0ff50..8bf155ca7 100644
--- a/smallmap_gui.c
+++ b/smallmap_gui.c
@@ -310,7 +310,7 @@ static inline uint32 GetSmallMapCountoursPixels(uint tile)
}
}
- return (_map_height_bits[_map_type_and_height[tile] & 0xF] & _smallmap_contours_andor[t][1]) | _smallmap_contours_andor[t][0];
+ return (_map_height_bits[TileHeight(tile)] & _smallmap_contours_andor[t][1]) | _smallmap_contours_andor[t][0];
}
static void DrawSmallMapContours(byte *dst, uint xc, uint yc, int pitch, int reps, uint32 mask)