src/vehicle_type.h
author richk
Wed, 16 Apr 2008 00:07:47 +0000
branchNewGRF_ports
changeset 10200 aba3af04cdbd
parent 6878 7d1ff2f621c7
child 10274 b3c58f3df92b
permissions -rw-r--r--
(svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
6872
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     1
/* $Id$ */
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     2
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     3
/** @file vehicle_type.h Types related to vehicles. */
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     4
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     5
#ifndef VEHICLE_TYPE_H
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     6
#define VEHICLE_TYPE_H
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     7
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     8
#include "core/enum_type.hpp"
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
     9
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    10
typedef uint16 VehicleID;
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    11
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    12
enum VehicleType {
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    13
	VEH_TRAIN,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    14
	VEH_ROAD,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    15
	VEH_SHIP,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    16
	VEH_AIRCRAFT,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    17
	VEH_SPECIAL,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    18
	VEH_DISASTER,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    19
	VEH_END,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    20
	VEH_INVALID = 0xFF,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    21
};
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    22
DECLARE_POSTFIX_INCREMENT(VehicleType);
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    23
template <> struct EnumPropsT<VehicleType> : MakeEnumPropsT<VehicleType, byte, VEH_TRAIN, VEH_END, VEH_INVALID> {};
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    24
typedef TinyEnumT<VehicleType> VehicleTypeByte;
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    25
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    26
struct Vehicle;
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    27
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    28
struct BaseVehicle
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    29
{
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    30
	VehicleTypeByte type;    ///< Type of vehicle
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    31
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    32
	/**
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    33
	 * Is this vehicle a valid vehicle?
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    34
	 * @return true if and only if the vehicle is valid.
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    35
	 */
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    36
	inline bool IsValid() const { return this->type != VEH_INVALID; }
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    37
};
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    38
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    39
static const VehicleID INVALID_VEHICLE = 0xFFFF;
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    40
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    41
/* Effect vehicle types */
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    42
enum EffectVehicle {
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    43
	EV_CHIMNEY_SMOKE   = 0,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    44
	EV_STEAM_SMOKE     = 1,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    45
	EV_DIESEL_SMOKE    = 2,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    46
	EV_ELECTRIC_SPARK  = 3,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    47
	EV_SMOKE           = 4,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    48
	EV_EXPLOSION_LARGE = 5,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    49
	EV_BREAKDOWN_SMOKE = 6,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    50
	EV_EXPLOSION_SMALL = 7,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    51
	EV_BULLDOZER       = 8,
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    52
	EV_BUBBLE          = 9
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    53
};
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    54
6878
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    55
/** Pathfinding option states */
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    56
enum {
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    57
	VPF_OPF  = 0, ///< The Original PathFinder
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    58
	VPF_NTP  = 0, ///< New Train Pathfinder, replacing OPF for trains
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    59
	VPF_NPF  = 1, ///< New PathFinder
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    60
	VPF_YAPF = 2, ///< Yet Another PathFinder
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    61
};
7d1ff2f621c7 (svn r12351) [NewGRF_ports] -Sync: with trunk r12051:12350.
richk
parents: 6872
diff changeset
    62
10200
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    63
/* Flags to add to p2 for goto depot commands */
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    64
/* Note: bits 8-10 are used for VLW flags */
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    65
enum DepotCommand {
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    66
	DEPOT_SERVICE       = (1 << 0), ///< The vehicle will leave the depot right after arrival (serivce only)
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    67
	DEPOT_MASS_SEND     = (1 << 1), ///< Tells that it's a mass send to depot command (type in VLW flag)
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    68
	DEPOT_DONT_CANCEL   = (1 << 2), ///< Don't cancel current goto depot command if any
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    69
	DEPOT_LOCATE_HANGAR = (1 << 3), ///< Find another airport if the target one lacks a hangar
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    70
	DEPOT_COMMAND_MASK  = 0xF,
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    71
};
aba3af04cdbd (svn r12732) [NewGRF_ports] -Sync: with trunk r12657:12672.
richk
parents: 6878
diff changeset
    72
6872
1c4a4a609f85 (svn r11950) [NewGRF_ports] -Sync with trunk r11566:11949.
rubidium
parents:
diff changeset
    73
#endif /* VEHICLE_TYPE_H */