summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rail.h17
-rw-r--r--src/table/railtypes.h12
2 files changed, 28 insertions, 1 deletions
diff --git a/src/rail.h b/src/rail.h
index 53b3a1337..04a712d1c 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 42738b80b..e569fe408 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,
},
};