(svn r19791) -Change: use the typed FOR_EACH_SET_BIT for RoadTypes (adf88)

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
rubidium 14 years ago
parent d2364c32ed
commit fe71d4fc99

@ -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;
}

@ -18,6 +18,17 @@
#include "company_type.h"
#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

Loading…
Cancel
Save