src/engine_type.h
author richk
Wed, 23 Apr 2008 03:14:27 +0000
branchNewGRF_ports
changeset 10305 e90761e37744
parent 10184 fcf5fb2548eb
child 10724 68a692eacf22
permissions -rw-r--r--
(svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
Seaplane is now defined on bits 2 & 3 of Prop 0x17 of Action0Planes.
Seaplanes can only be built at airports they can use. Some seaplanes have dual land/sea capability; this is supported.
Updated seaplaneport.grf to reflect new functionality.
10184
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     1
/* $Id$ */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     2
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     3
/** @file engine_type.h Types related to engines. */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     4
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     5
#ifndef ENGINE_TYPE_H
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     6
#define ENGINE_TYPE_H
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     7
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     8
#include "rail_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
     9
#include "cargo_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    10
#include "vehicle_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    11
#include "gfx_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    12
#include "date_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    13
#include "sound_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    14
#include "player_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    15
#include "strings_type.h"
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    16
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    17
typedef uint16 EngineID;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    18
typedef uint16 EngineRenewID;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    19
typedef EngineID *EngineList; ///< engine list type placeholder acceptable for C code (see helpers.cpp)
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    20
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    21
enum RailVehicleTypes {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    22
	RAILVEH_SINGLEHEAD,  ///< indicates a "standalone" locomotive
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    23
	RAILVEH_MULTIHEAD,   ///< indicates a combination of two locomotives
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    24
	RAILVEH_WAGON,       ///< simple wagon, not motorized
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    25
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    26
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    27
enum EngineClass {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    28
	EC_STEAM,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    29
	EC_DIESEL,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    30
	EC_ELECTRIC,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    31
	EC_MONORAIL,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    32
	EC_MAGLEV,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    33
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    34
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    35
struct RailVehicleInfo {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    36
	byte image_index;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    37
	RailVehicleTypes railveh_type;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    38
	byte base_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    39
	RailTypeByte railtype;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    40
	uint16 max_speed;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    41
	uint16 power;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    42
	uint16 weight;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    43
	byte running_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    44
	byte running_cost_class;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    45
	EngineClass engclass;           ///< Class of engine for this vehicle
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    46
	byte capacity;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    47
	CargoID cargo_type;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    48
	byte ai_rank;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    49
	byte ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    50
	uint16 pow_wag_power;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    51
	byte pow_wag_weight;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    52
	byte visual_effect; // NOTE: this is not 100% implemented yet, at the moment it is only used as a 'fallback' value
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    53
	                    //       for when the 'powered wagon' callback fails. But it should really also determine what
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    54
	                    //       kind of visual effect to generate for a vehicle (default, steam, diesel, electric).
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    55
	                    //       Same goes for the callback result, which atm is only used to check if a wagon is powered.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    56
	byte shorten_factor;   ///< length on main map for this type is 8 - shorten_factor
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    57
	byte tractive_effort;  ///< Tractive effort coefficient
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    58
	byte user_def_data;    ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    59
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    60
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    61
struct ShipVehicleInfo {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    62
	byte image_index;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    63
	byte base_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    64
	uint16 max_speed;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    65
	CargoID cargo_type;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    66
	uint16 capacity;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    67
	byte running_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    68
	SoundFxByte sfx;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    69
	bool refittable;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    70
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    71
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    72
/* AircraftVehicleInfo subtypes, bitmask type.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    73
 * If bit 0 is 0 then it is a helicopter, otherwise it is a plane
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    74
 * in which case bit 1 tells us whether it's a big(fast) plane or not */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    75
enum {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    76
	AIR_HELI = 0,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    77
	AIR_CTOL = 1, ///< Conventional Take Off and Landing, i.e. planes
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    78
	AIR_FAST = 2,
10305
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    79
};
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    80
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    81
/* AircraftVehicleInfo airport_required, bitmask type.
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    82
 * Indicates whether an aircraft, can, or can only use seaplane airports.
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    83
 * If bit 0 is 1 then it can land at a seaplane airport.
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    84
 * If bit 1 is 1 then it can ONLY land at a seaplane airport. */
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    85
enum {
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    86
	AIRPORT_LAND_ONLY   = 0,
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    87
	AIRPORT_SEA_OR_LAND = 1,
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
    88
	AIRPORT_SEA_ONLY    = 3,
10184
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    89
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    90
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    91
struct AircraftVehicleInfo {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    92
	byte image_index;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    93
	byte base_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    94
	byte running_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    95
	byte subtype;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    96
	SoundFxByte sfx;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    97
	byte acceleration;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    98
	uint16 max_speed;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
    99
	byte mail_capacity;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   100
	uint16 passenger_capacity;
10305
e90761e37744 (svn r12846) [NewGRF_ports] -Change: Added clearer support for seaplanes.
richk
parents: 10184
diff changeset
   101
	byte airport_required;
10184
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   102
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   103
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   104
struct RoadVehicleInfo {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   105
	byte image_index;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   106
	byte base_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   107
	byte running_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   108
	byte running_cost_class;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   109
	SoundFxByte sfx;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   110
	byte max_speed;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   111
	byte capacity;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   112
	CargoID cargo_type;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   113
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   114
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   115
/** Information about a vehicle
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   116
 *  @see table/engines.h
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   117
 */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   118
struct EngineInfo {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   119
	Date base_intro;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   120
	Year lifelength;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   121
	Year base_life;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   122
	byte unk2;         ///< flag for carriage(bit 7) and decay speed(bits0..6)
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   123
	byte load_amount;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   124
	byte climates;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   125
	uint32 refit_mask;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   126
	byte refit_cost;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   127
	byte misc_flags;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   128
	byte callbackmask;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   129
	int8 retire_early;  ///< Number of years early to retire vehicle
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   130
	StringID string_id; ///< Default name of engine
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   131
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   132
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   133
struct Engine {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   134
	char *name;         ///< Custom name of engine
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   135
	Date intro_date;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   136
	Date age;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   137
	uint16 reliability;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   138
	uint16 reliability_spd_dec;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   139
	uint16 reliability_start, reliability_max, reliability_final;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   140
	uint16 duration_phase_1, duration_phase_2, duration_phase_3;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   141
	byte lifelength;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   142
	byte flags;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   143
	uint8 preview_player_rank;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   144
	byte preview_wait;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   145
	byte player_avail;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   146
	VehicleType type; ///< type, ie VEH_ROAD, VEH_TRAIN, etc.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   147
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   148
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   149
/**
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   150
 * EngineInfo.misc_flags is a bitmask, with the following values
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   151
 */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   152
enum {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   153
	EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   154
	EF_ROAD_TRAM  = 0, ///< Road vehicle is a tram/light rail vehicle
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   155
	EF_USES_2CC   = 1, ///< Vehicle uses two company colours
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   156
	EF_RAIL_IS_MU = 2, ///< Rail vehicle is a multiple-unit (DMU/EMU)
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   157
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   158
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   159
/**
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   160
 * Engine.flags is a bitmask, with the following values.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   161
 */
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   162
enum {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   163
	ENGINE_AVAILABLE         = 1, ///< This vehicle is available to everyone.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   164
	ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a player.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   165
	ENGINE_OFFER_WINDOW_OPEN = 4, ///< The exclusive offer window is currently open for a player.
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   166
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   167
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   168
enum {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   169
	NUM_VEHICLE_TYPES = 6
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   170
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   171
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   172
static const EngineID INVALID_ENGINE = 0xFFFF;
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   173
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   174
enum {
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   175
	NUM_NORMAL_RAIL_ENGINES = 54,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   176
	NUM_MONORAIL_ENGINES    = 30,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   177
	NUM_MAGLEV_ENGINES      = 32,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   178
	NUM_TRAIN_ENGINES       = NUM_NORMAL_RAIL_ENGINES + NUM_MONORAIL_ENGINES + NUM_MAGLEV_ENGINES,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   179
	NUM_ROAD_ENGINES        = 88,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   180
	NUM_SHIP_ENGINES        = 11,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   181
	NUM_AIRCRAFT_ENGINES    = 41,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   182
	TOTAL_NUM_ENGINES       = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES + NUM_AIRCRAFT_ENGINES,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   183
	AIRCRAFT_ENGINES_INDEX  = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   184
	SHIP_ENGINES_INDEX      = NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   185
	ROAD_ENGINES_INDEX      = NUM_TRAIN_ENGINES,
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   186
};
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   187
fcf5fb2548eb (svn r12715) [NewGRF_ports] -Sync: with trunk r12351:12644.
richk
parents:
diff changeset
   188
#endif /* ENGINE_TYPE_H */