summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2009-06-10 08:18:40 +0000
committersmatz <smatz@openttd.org>2009-06-10 08:18:40 +0000
commitec78a39f9e242930f3f83a3cb44858d392b3786f (patch)
tree62a4f5a1227cc77847fd1d173d33cf8b15a41dd1 /src
parent4e2c1ef08f6544e59614b8cdacd6d67fb8092306 (diff)
downloadopenttd-ec78a39f9e242930f3f83a3cb44858d392b3786f.tar.xz
(svn r16550) -Codechange: move definition of ScaleByMapSize to header file, use shifts instead of mults
Diffstat (limited to 'src')
-rw-r--r--src/map.cpp31
-rw-r--r--src/map_func.h28
2 files changed, 24 insertions, 35 deletions
diff --git a/src/map.cpp b/src/map.cpp
index cdca65e00..3dfe47890 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -93,37 +93,6 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add,
#endif
/*!
- * Scales the given value by the map size, where the given value is
- * for a 256 by 256 map.
- * @param n the value to scale
- * @return the scaled size
- */
-uint ScaleByMapSize(uint n)
-{
- /* First shift by 12 to prevent integer overflow for large values of n.
- * >>12 is safe since the min mapsize is 64x64
- * Add (1<<4)-1 to round upwards. */
- return (n * (MapSize() >> 12) + (1 << 4) - 1) >> 4;
-}
-
-
-/*!
- * Scales the given value by the maps circumference, where the given
- * value is for a 256 by 256 map
- * @param n the value to scale
- * @return the scaled size
- */
-uint ScaleByMapSize1D(uint n)
-{
- /* Normal circumference for the X+Y is 256+256 = 1<<9
- * Note, not actually taking the full circumference into account,
- * just half of it.
- * (1<<9) - 1 is there to scale upwards. */
- return (n * (MapSizeX() + MapSizeY()) + (1 << 9) - 1) >> 9;
-}
-
-
-/*!
* This function checks if we add addx/addy to tile, if we
* do wrap around the edges. For example, tile = (10,2) and
* addx = +3 and addy = -4. This function will now return
diff --git a/src/map_func.h b/src/map_func.h
index 038942cd9..265b88741 100644
--- a/src/map_func.h
+++ b/src/map_func.h
@@ -111,14 +111,34 @@ static inline uint MapMaxY()
}
/**
- * Scales relative to the number of tiles.
+ * Scales the given value by the map size, where the given value is
+ * for a 256 by 256 map.
+ * @param n the value to scale
+ * @return the scaled size
*/
-uint ScaleByMapSize(uint);
+static inline uint ScaleByMapSize(uint n)
+{
+ /* Subtract 12 from shift in order to prevent integer overflow
+ * for large values of n. It's safe since the min mapsize is 64x64.
+ * Add (1<<4)-1 to round upwards. */
+ return ((n << (MapLogX() + MapLogY() - 12)) + (1 << 4) - 1) >> 4;
+}
+
/**
- * Scale relative to the circumference of the map.
+ * Scales the given value by the maps circumference, where the given
+ * value is for a 256 by 256 map
+ * @param n the value to scale
+ * @return the scaled size
*/
-uint ScaleByMapSize1D(uint);
+static inline uint ScaleByMapSize1D(uint n)
+{
+ /* Normal circumference for the X+Y is 256+256 = 1<<9
+ * Note, not actually taking the full circumference into account,
+ * just half of it.
+ * (1<<9) - 1 is there to scale upwards. */
+ return ((n << MapLogX()) + (n << MapLogY()) + (1 << 9) - 1) >> 9;
+}
/**
* An offset value between to tiles.