src/vehicle_type.h
branchNewGRF_ports
changeset 6872 1c4a4a609f85
child 6878 7d1ff2f621c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/vehicle_type.h	Tue Jan 22 21:00:30 2008 +0000
@@ -0,0 +1,55 @@
+/* $Id$ */
+
+/** @file vehicle_type.h Types related to vehicles. */
+
+#ifndef VEHICLE_TYPE_H
+#define VEHICLE_TYPE_H
+
+#include "core/enum_type.hpp"
+
+typedef uint16 VehicleID;
+
+enum VehicleType {
+	VEH_TRAIN,
+	VEH_ROAD,
+	VEH_SHIP,
+	VEH_AIRCRAFT,
+	VEH_SPECIAL,
+	VEH_DISASTER,
+	VEH_END,
+	VEH_INVALID = 0xFF,
+};
+DECLARE_POSTFIX_INCREMENT(VehicleType);
+template <> struct EnumPropsT<VehicleType> : MakeEnumPropsT<VehicleType, byte, VEH_TRAIN, VEH_END, VEH_INVALID> {};
+typedef TinyEnumT<VehicleType> VehicleTypeByte;
+
+struct Vehicle;
+
+struct BaseVehicle
+{
+	VehicleTypeByte type;    ///< Type of vehicle
+
+	/**
+	 * Is this vehicle a valid vehicle?
+	 * @return true if and only if the vehicle is valid.
+	 */
+	inline bool IsValid() const { return this->type != VEH_INVALID; }
+};
+
+static const VehicleID INVALID_VEHICLE = 0xFFFF;
+
+/* Effect vehicle types */
+enum EffectVehicle {
+	EV_CHIMNEY_SMOKE   = 0,
+	EV_STEAM_SMOKE     = 1,
+	EV_DIESEL_SMOKE    = 2,
+	EV_ELECTRIC_SPARK  = 3,
+	EV_SMOKE           = 4,
+	EV_EXPLOSION_LARGE = 5,
+	EV_BREAKDOWN_SMOKE = 6,
+	EV_EXPLOSION_SMALL = 7,
+	EV_BULLDOZER       = 8,
+	EV_BUBBLE          = 9
+};
+
+#endif /* VEHICLE_TYPE_H */