summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2010-05-11 21:01:57 +0000
committerrubidium <rubidium@openttd.org>2010-05-11 21:01:57 +0000
commitfe71d4fc99aa74c504de0ce3c80cb318903bddf7 (patch)
treea341ee7052894b7f161a41c435038c625c9f5837
parentd2364c32edd064dd014b9126029ad70673e48ba3 (diff)
downloadopenttd-fe71d4fc99aa74c504de0ce3c80cb318903bddf7.tar.xz
(svn r19791) -Change: use the typed FOR_EACH_SET_BIT for RoadTypes (adf88)
-rw-r--r--src/road_cmd.cpp12
-rw-r--r--src/road_func.h11
2 files changed, 16 insertions, 7 deletions
diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp
index 10b902714..27e84b44e 100644
--- a/src/road_cmd.cpp
+++ b/src/road_cmd.cpp
@@ -944,14 +944,12 @@ static CommandCost ClearTile_Road(TileIndex tile, DoCommandFlag flags)
/* Clear the road if only one piece is on the tile OR we are not using the DC_AUTO flag */
if ((HasExactlyOneBit(b) && GetRoadBits(tile, ROADTYPE_TRAM) == ROAD_NONE) || !(flags & DC_AUTO)) {
- RoadTypes rts = GetRoadTypes(tile);
CommandCost ret(EXPENSES_CONSTRUCTION);
- for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
- if (HasBit(rts, rt)) {
- CommandCost tmp_ret = RemoveRoad(tile, flags, GetRoadBits(tile, rt), rt, true);
- if (tmp_ret.Failed()) return tmp_ret;
- ret.AddCost(tmp_ret);
- }
+ RoadType rt;
+ FOR_EACH_SET_ROADTYPE(rt, GetRoadTypes(tile)) {
+ CommandCost tmp_ret = RemoveRoad(tile, flags, GetRoadBits(tile, rt), rt, true);
+ if (tmp_ret.Failed()) return tmp_ret;
+ ret.AddCost(tmp_ret);
}
return ret;
}
diff --git a/src/road_func.h b/src/road_func.h
index 7303ebff3..4a49d4601 100644
--- a/src/road_func.h
+++ b/src/road_func.h
@@ -19,6 +19,17 @@
#include "tile_type.h"
/**
+ * Iterate through each set RoadType in a RoadTypes value.
+ * For more informations see FOR_EACH_SET_BIT_EX.
+ *
+ * @param var Loop index variable that stores fallowing set road type. Must be of type RoadType.
+ * @param road_types The value to iterate through (any expression).
+ *
+ * @see FOR_EACH_SET_BIT_EX
+ */
+#define FOR_EACH_SET_ROADTYPE(var, road_types) FOR_EACH_SET_BIT_EX(RoadType, var, RoadTypes, road_types)
+
+/**
* Whether the given roadtype is valid.
* @param rt the roadtype to check for validness
* @return true if and only if valid