rubidium@8101: /* $Id$ */ rubidium@8101: rubidium@8101: /** @file rail_type.h The different types of rail */ rubidium@8101: rubidium@8101: #ifndef RAIL_TYPE_H rubidium@8101: #define RAIL_TYPE_H rubidium@8101: rubidium@8263: #include "core/enum_type.hpp" rubidium@8263: rubidium@8101: /** rubidium@8101: * Enumeration for all possible railtypes. rubidium@8101: * rubidium@8101: * This enumeration defines all 4 possible railtypes. rubidium@8101: */ rubidium@8101: enum RailType { rubidium@8101: RAILTYPE_BEGIN = 0, ///< Used for iterations rubidium@8101: RAILTYPE_RAIL = 0, ///< Standard non-electric rails rubidium@8101: RAILTYPE_ELECTRIC = 1, ///< Electric rails rubidium@8101: RAILTYPE_MONO = 2, ///< Monorail rubidium@8101: RAILTYPE_MAGLEV = 3, ///< Maglev rubidium@8101: RAILTYPE_END, ///< Used for iterations rubidium@8101: INVALID_RAILTYPE = 0xFF ///< Flag for invalid railtype rubidium@8101: }; rubidium@8101: rubidium@8101: /** Allow incrementing of Track variables */ rubidium@8101: DECLARE_POSTFIX_INCREMENT(RailType); rubidium@8101: /** Define basic enum properties */ rubidium@8101: template <> struct EnumPropsT : MakeEnumPropsT {}; rubidium@8101: typedef TinyEnumT RailTypeByte; rubidium@8101: rubidium@8236: /** rubidium@8236: * The different roadtypes we support, but then a bitmask of them rubidium@8236: */ rubidium@8236: enum RailTypes { rubidium@8236: RAILTYPES_NONE = 0, ///< No rail types rubidium@8236: RAILTYPES_RAIL = 1 << RAILTYPE_RAIL, ///< Non-electrified rails rubidium@8236: RAILTYPES_ELECTRIC = 1 << RAILTYPE_ELECTRIC, ///< Electrified rails rubidium@8236: RAILTYPES_MONO = 1 << RAILTYPE_MONO, ///< Monorail! rubidium@8236: RAILTYPES_MAGLEV = 1 << RAILTYPE_MAGLEV, ///< Ever fast maglev rubidium@8236: RAILTYPES_ALL = RAILTYPES_RAIL | RAILTYPES_ELECTRIC | RAILTYPES_MONO | RAILTYPES_MAGLEV, ///< All of them rubidium@8236: RAILTYPES_END, ///< Used for iterations? rubidium@8236: INVALID_RAILTYPES = 0xFF ///< Invalid railtypes rubidium@8236: }; rubidium@8236: DECLARE_ENUM_AS_BIT_SET(RailTypes); rubidium@8236: template <> struct EnumPropsT : MakeEnumPropsT {}; rubidium@8236: typedef TinyEnumT RailTypesByte; rubidium@8236: rubidium@8101: #endif /* RAIL_TYPE_H */