Script: Add ScriptRoad methods related to road types
This commit is contained in:
@@ -98,6 +98,22 @@
|
||||
return ::GetAnyRoadBits(tile, ::GetRoadTramType((::RoadType)road_type), false) != ROAD_NONE;
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::HasRoadTramType(TileIndex tile, RoadTramTypes road_tram_type)
|
||||
{
|
||||
if (!ScriptMap::IsValidTile(tile)) return false;
|
||||
if (road_tram_type != ROADTRAMTYPES_ROAD && road_tram_type != ROADTRAMTYPES_TRAM) return false;
|
||||
return ::GetAnyRoadBits(tile, (::RoadTramType)road_tram_type, false) != ROAD_NONE;
|
||||
}
|
||||
|
||||
/* static */ ScriptRoad::RoadType ScriptRoad::GetRoadType(TileIndex tile, RoadTramTypes road_tram_type)
|
||||
{
|
||||
if (!ScriptMap::IsValidTile(tile)) return ROADTYPE_INVALID;
|
||||
if (road_tram_type != ROADTRAMTYPES_ROAD && road_tram_type != ROADTRAMTYPES_TRAM) return ROADTYPE_INVALID;
|
||||
if (::GetAnyRoadBits(tile, (::RoadTramType)road_tram_type, false) == ROAD_NONE) return ROADTYPE_INVALID;
|
||||
|
||||
return (RoadType)::GetRoadType(tile, (::RoadTramType)road_tram_type);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::AreRoadTilesConnected(TileIndex t1, TileIndex t2)
|
||||
{
|
||||
if (!::IsValidTile(t1)) return false;
|
||||
@@ -644,3 +660,31 @@ static bool NeighbourHasReachableRoad(::RoadType rt, TileIndex start_tile, DiagD
|
||||
|
||||
return GetRoadTypeInfo((::RoadType)roadtype)->maintenance_multiplier;
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::IsCatenaryRoadType(RoadType roadtype)
|
||||
{
|
||||
if (!ScriptRoad::IsRoadTypeAvailable(roadtype)) return false;
|
||||
|
||||
return HasBit(GetRoadTypeInfo((::RoadType)roadtype)->flags, ROTF_CATENARY);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::IsNonLevelCrossingRoadType(RoadType roadtype)
|
||||
{
|
||||
if (!ScriptRoad::IsRoadTypeAvailable(roadtype)) return false;
|
||||
|
||||
return HasBit(GetRoadTypeInfo((::RoadType)roadtype)->flags, ROTF_NO_LEVEL_CROSSING);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::IsNoTownHousesRoadType(RoadType roadtype)
|
||||
{
|
||||
if (!ScriptRoad::IsRoadTypeAvailable(roadtype)) return false;
|
||||
|
||||
return HasBit(GetRoadTypeInfo((::RoadType)roadtype)->flags, ROTF_NO_HOUSES);
|
||||
}
|
||||
|
||||
/* static */ bool ScriptRoad::IsTownBuildableRoadType(RoadType roadtype)
|
||||
{
|
||||
if (!ScriptRoad::IsRoadTypeAvailable(roadtype)) return false;
|
||||
|
||||
return HasBit(GetRoadTypeInfo((::RoadType)roadtype)->flags, ROTF_TOWN_BUILD) && !HasBit(GetRoadTypeInfo((::RoadType)roadtype)->extra_flags, RXTF_NO_TOWN_MODIFICATION);
|
||||
}
|
||||
|
Reference in New Issue
Block a user