mirror of https://github.com/OpenTTD/OpenTTD
(svn r19791) -Change: use the typed FOR_EACH_SET_BIT for RoadTypes (adf88)
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…
Reference in New Issue