tron@2186: /* $Id$ */ tron@2186: rubidium@8108: /** @file vehicle_type.h Types related to vehicles. */ rubidium@5991: rubidium@8108: #ifndef VEHICLE_TYPE_H rubidium@8108: #define VEHICLE_TYPE_H rubidium@6000: rubidium@8108: #include "core/enum_type.hpp" rubidium@6000: rubidium@8108: typedef uint16 VehicleID; rubidium@6000: rubidium@6621: enum VehicleType { rubidium@6259: VEH_TRAIN, rubidium@6259: VEH_ROAD, rubidium@6259: VEH_SHIP, rubidium@6259: VEH_AIRCRAFT, rubidium@6259: VEH_SPECIAL, rubidium@6259: VEH_DISASTER, rubidium@6621: VEH_END, rubidium@6259: VEH_INVALID = 0xFF, rubidium@6621: }; rubidium@7086: DECLARE_POSTFIX_INCREMENT(VehicleType); rubidium@6621: template <> struct EnumPropsT : MakeEnumPropsT {}; rubidium@6621: typedef TinyEnumT VehicleTypeByte; matthijs@1752: rubidium@7398: struct Vehicle; rubidium@7490: rubidium@8144: struct BaseVehicle rubidium@8144: { rubidium@8144: VehicleTypeByte type; ///< Type of vehicle rubidium@8144: rubidium@8144: /** rubidium@8144: * Is this vehicle a valid vehicle? rubidium@8144: * @return true if and only if the vehicle is valid. rubidium@8144: */ rubidium@8144: inline bool IsValid() const { return this->type != VEH_INVALID; } rubidium@8144: }; rubidium@8144: rubidium@8144: static const VehicleID INVALID_VEHICLE = 0xFFFF; rubidium@8144: rubidium@8144: /* Effect vehicle types */ rubidium@8144: enum EffectVehicle { rubidium@8144: EV_CHIMNEY_SMOKE = 0, rubidium@8144: EV_STEAM_SMOKE = 1, rubidium@8144: EV_DIESEL_SMOKE = 2, rubidium@8144: EV_ELECTRIC_SPARK = 3, rubidium@8144: EV_SMOKE = 4, rubidium@8144: EV_EXPLOSION_LARGE = 5, rubidium@8144: EV_BREAKDOWN_SMOKE = 6, rubidium@8144: EV_EXPLOSION_SMALL = 7, rubidium@8144: EV_BULLDOZER = 8, rubidium@8144: EV_BUBBLE = 9 rubidium@8144: }; rubidium@8144: rubidium@8108: #endif /* VEHICLE_TYPE_H */