summaryrefslogtreecommitdiff
path: root/src/landscape.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-11-04 10:20:24 +0000
committerrubidium <rubidium@openttd.org>2011-11-04 10:20:24 +0000
commita36551dbb4a6aa8a10e99df8331ac4ecb8586270 (patch)
treef63714ceff46343e77309a9084758de39ca52b9b /src/landscape.h
parent7757a2ed406996be35c7179185f2e4e7cba37e12 (diff)
downloadopenttd-a36551dbb4a6aa8a10e99df8331ac4ecb8586270.tar.xz
(svn r23092) -Codechange: create a non-pixel version of some of the Get*PixelZ functions, and let Get*PixelZ wrap around the new function (multiplying the Z by TILE_HEIGHT) just like TileHeight and TilePixelHeight
Diffstat (limited to 'src/landscape.h')
-rw-r--r--src/landscape.h49
1 files changed, 46 insertions, 3 deletions
diff --git a/src/landscape.h b/src/landscape.h
index b70b0a39a..f3071868f 100644
--- a/src/landscape.h
+++ b/src/landscape.h
@@ -35,11 +35,41 @@ byte HighestSnowLine();
byte LowestSnowLine();
void ClearSnowLine();
+int GetSlopeZInCorner(Slope tileh, Corner corner);
+Slope GetFoundationSlope(TileIndex tile, uint *z);
+
uint GetPartialPixelZ(int x, int y, Slope corners);
uint GetSlopePixelZ(int x, int y);
void GetSlopePixelZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
-int GetSlopePixelZInCorner(Slope tileh, Corner corner);
-Slope GetFoundationPixelSlope(TileIndex tile, uint *z);
+
+/**
+ * Determine the Z height of a corner relative to TileZ.
+ *
+ * @pre The slope must not be a halftile slope.
+ *
+ * @param tileh The slope.
+ * @param corner The corner.
+ * @return Z position of corner relative to TileZ.
+ */
+static inline int GetSlopePixelZInCorner(Slope tileh, Corner corner)
+{
+ return GetSlopeZInCorner(tileh, corner) * TILE_HEIGHT;
+}
+
+/**
+ * Get slope of a tile on top of a (possible) foundation
+ * If a tile does not have a foundation, the function returns the same as GetTilePixelSlope.
+ *
+ * @param tile The tile of interest.
+ * @param z returns the z of the foundation slope. (Can be NULL, if not needed)
+ * @return The slope on top of the foundation.
+ */
+static inline Slope GetFoundationPixelSlope(TileIndex tile, uint *z)
+{
+ Slope s = GetFoundationSlope(tile, z);
+ if (z != NULL) *z *= TILE_HEIGHT;
+ return s;
+}
/**
* Map 3D world or tile coordinate to equivalent 2D coordinate as used in the viewports and smallmap.
@@ -84,7 +114,20 @@ static inline Point InverseRemapCoords(int x, int y)
return pt;
}
-uint ApplyPixelFoundationToSlope(Foundation f, Slope *s);
+uint ApplyFoundationToSlope(Foundation f, Slope *s);
+/**
+ * Applies a foundation to a slope.
+ *
+ * @pre Foundation and slope must be valid combined.
+ * @param f The #Foundation.
+ * @param s The #Slope to modify.
+ * @return Increment to the tile Z coordinate.
+ */
+static inline uint ApplyPixelFoundationToSlope(Foundation f, Slope *s)
+{
+ return ApplyFoundationToSlope(f, s) * TILE_HEIGHT;
+}
+
void DrawFoundation(TileInfo *ti, Foundation f);
bool HasFoundationNW(TileIndex tile, Slope slope_here, uint z_here);
bool HasFoundationNE(TileIndex tile, Slope slope_here, uint z_here);