mirror of https://github.com/OpenTTD/OpenTTD
(svn r19506) -Fix: Tunnels, bridges and roadstops are build with only one roadtype.
parent
fe35a0cacf
commit
f45e579923
|
@ -28,16 +28,6 @@ static inline bool IsValidRoadType(RoadType rt)
|
||||||
return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM;
|
return rt == ROADTYPE_ROAD || rt == ROADTYPE_TRAM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Are the given bits pointing to valid roadtypes?
|
|
||||||
* @param rts the roadtypes to check for validness
|
|
||||||
* @return true if and only if valid
|
|
||||||
*/
|
|
||||||
static inline bool AreValidRoadTypes(RoadTypes rts)
|
|
||||||
{
|
|
||||||
return HasBit(rts, ROADTYPE_ROAD) || HasBit(rts, ROADTYPE_TRAM);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Maps a RoadType to the corresponding RoadTypes value
|
* Maps a RoadType to the corresponding RoadTypes value
|
||||||
*
|
*
|
||||||
|
|
|
@ -1697,7 +1697,7 @@ CommandCost CmdBuildRoadStop(TileIndex tile, DoCommandFlag flags, uint32 p1, uin
|
||||||
|
|
||||||
if (distant_join && (!_settings_game.station.distant_join_stations || !Station::IsValidID(station_to_join))) return CMD_ERROR;
|
if (distant_join && (!_settings_game.station.distant_join_stations || !Station::IsValidID(station_to_join))) return CMD_ERROR;
|
||||||
|
|
||||||
if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
|
if (!HasExactlyOneBit(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
|
||||||
|
|
||||||
/* Trams only have drive through stops */
|
/* Trams only have drive through stops */
|
||||||
if (!is_drive_through && HasBit(rts, ROADTYPE_TRAM)) return CMD_ERROR;
|
if (!is_drive_through && HasBit(rts, ROADTYPE_TRAM)) return CMD_ERROR;
|
||||||
|
|
|
@ -207,7 +207,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
|
||||||
switch (transport_type) {
|
switch (transport_type) {
|
||||||
case TRANSPORT_ROAD:
|
case TRANSPORT_ROAD:
|
||||||
roadtypes = (RoadTypes)GB(p2, 8, 2);
|
roadtypes = (RoadTypes)GB(p2, 8, 2);
|
||||||
if (!AreValidRoadTypes(roadtypes) || !HasRoadTypesAvail(_current_company, roadtypes)) return CMD_ERROR;
|
if (!HasExactlyOneBit(roadtypes) || !HasRoadTypesAvail(_current_company, roadtypes)) return CMD_ERROR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TRANSPORT_RAIL:
|
case TRANSPORT_RAIL:
|
||||||
|
@ -487,7 +487,7 @@ CommandCost CmdBuildTunnel(TileIndex start_tile, DoCommandFlag flags, uint32 p1,
|
||||||
if (!ValParamRailtype((RailType)p1)) return CMD_ERROR;
|
if (!ValParamRailtype((RailType)p1)) return CMD_ERROR;
|
||||||
} else {
|
} else {
|
||||||
const RoadTypes rts = (RoadTypes)GB(p1, 0, 2);
|
const RoadTypes rts = (RoadTypes)GB(p1, 0, 2);
|
||||||
if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
|
if (!HasExactlyOneBit(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint start_z;
|
uint start_z;
|
||||||
|
|
Loading…
Reference in New Issue