diff --git a/src/rail.h b/src/rail.h index 53b3a13378..04a712d1cb 100644 --- a/src/rail.h +++ b/src/rail.h @@ -13,6 +13,16 @@ #include "economy_func.h" #include "tile_cmd.h" +enum RailTypeFlag { + RTF_CATENARY = 0, ///< Set if the rail type should have catenary drawn +}; + +enum RailTypeFlags { + RTFB_NONE = 0, + RTFB_CATENARY = 1 << RTF_CATENARY, +}; +DECLARE_ENUM_AS_BIT_SET(RailTypeFlags); + /** This struct contains all the info that is needed to draw and construct tracks. */ struct RailtypeInfo { @@ -93,6 +103,11 @@ struct RailtypeInfo { * Multiplier for curve maximum speed advantage */ byte curve_speed; + + /** + * Bit mask of rail type flags + */ + RailTypeFlags flags; }; @@ -190,7 +205,7 @@ int TicksToLeaveDepot(const Vehicle *v); */ static inline bool HasCatenary(RailType rt) { - return rt == RAILTYPE_ELECTRIC; + return HasBit(GetRailTypeInfo(rt)->flags, RTF_CATENARY); } diff --git a/src/table/railtypes.h b/src/table/railtypes.h index 42738b80bf..e569fe4083 100644 --- a/src/table/railtypes.h +++ b/src/table/railtypes.h @@ -60,6 +60,9 @@ RailtypeInfo _railtypes[] = { /* curve speed advantage (multiplier) */ 0, + + /* flags */ + RTFB_NONE, }, /** Electrified railway */ @@ -116,6 +119,9 @@ RailtypeInfo _railtypes[] = { /* curve speed advantage (multiplier) */ 0, + + /* flags */ + RTFB_CATENARY, }, /** Monorail */ @@ -168,6 +174,9 @@ RailtypeInfo _railtypes[] = { /* curve speed advantage (multiplier) */ 1, + + /* flags */ + RTFB_NONE, }, /** Maglev */ @@ -220,6 +229,9 @@ RailtypeInfo _railtypes[] = { /* curve speed advantage (multiplier) */ 2, + + /* flags */ + RTFB_NONE, }, };