18 RAILTYPE_MAGLEV = 3, ///< Maglev |
20 RAILTYPE_MAGLEV = 3, ///< Maglev |
19 RAILTYPE_END, ///< Used for iterations |
21 RAILTYPE_END, ///< Used for iterations |
20 INVALID_RAILTYPE = 0xFF ///< Flag for invalid railtype |
22 INVALID_RAILTYPE = 0xFF ///< Flag for invalid railtype |
21 }; |
23 }; |
22 |
24 |
23 typedef byte RailTypeMask; |
|
24 |
|
25 /** Allow incrementing of Track variables */ |
25 /** Allow incrementing of Track variables */ |
26 DECLARE_POSTFIX_INCREMENT(RailType); |
26 DECLARE_POSTFIX_INCREMENT(RailType); |
27 /** Define basic enum properties */ |
27 /** Define basic enum properties */ |
28 template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE> {}; |
28 template <> struct EnumPropsT<RailType> : MakeEnumPropsT<RailType, byte, RAILTYPE_BEGIN, RAILTYPE_END, INVALID_RAILTYPE> {}; |
29 typedef TinyEnumT<RailType> RailTypeByte; |
29 typedef TinyEnumT<RailType> RailTypeByte; |
30 |
30 |
|
31 /** |
|
32 * The different roadtypes we support, but then a bitmask of them |
|
33 */ |
|
34 enum RailTypes { |
|
35 RAILTYPES_NONE = 0, ///< No rail types |
|
36 RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails |
|
37 RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails |
|
38 RAILTYPES_MONO = 1 << RAILTYPE_MONO, ///< Monorail! |
|
39 RAILTYPES_MAGLEV = 1 << RAILTYPE_MAGLEV, ///< Ever fast maglev |
|
40 RAILTYPES_ALL = RAILTYPES_RAIL | RAILTYPES_ELECTRIC | RAILTYPES_MONO | RAILTYPES_MAGLEV, ///< All of them |
|
41 RAILTYPES_END, ///< Used for iterations? |
|
42 INVALID_RAILTYPES = 0xFF ///< Invalid railtypes |
|
43 }; |
|
44 DECLARE_ENUM_AS_BIT_SET(RailTypes); |
|
45 template <> struct EnumPropsT<RailTypes> : MakeEnumPropsT<RailTypes, byte, RAILTYPES_NONE, RAILTYPES_END, INVALID_RAILTYPES> {}; |
|
46 typedef TinyEnumT<RailTypes> RailTypesByte; |
|
47 |
31 #endif /* RAIL_TYPE_H */ |
48 #endif /* RAIL_TYPE_H */ |