OpenTTD
engine_type.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenTTD.
3  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6  */
7 
10 #ifndef ENGINE_TYPE_H
11 #define ENGINE_TYPE_H
12 
13 #include "economy_type.h"
14 #include "rail_type.h"
15 #include "road_type.h"
16 #include "cargo_type.h"
17 #include "date_type.h"
18 #include "sound_type.h"
19 #include "strings_type.h"
20 
21 typedef uint16 EngineID;
22 
23 struct Engine;
24 
30 };
31 
39 };
40 
43  byte image_index;
44  RailVehicleTypes railveh_type;
45  byte cost_factor;
46  RailType railtype;
47  uint16 max_speed;
48  uint16 power;
49  uint16 weight;
50  byte running_cost;
51  Price running_cost_class;
53  byte capacity;
55  uint16 pow_wag_power;
60  byte air_drag;
62 };
63 
66  byte image_index;
67  byte cost_factor;
68  uint16 max_speed;
69  uint16 capacity;
70  byte running_cost;
71  SoundID sfx;
76 
78  uint ApplyWaterClassSpeedFrac(uint raw_speed, bool is_ocean) const
79  {
80  /* speed_frac == 0 means no reduction while 0xFF means reduction to 1/256. */
81  return raw_speed * (256 - (is_ocean ? this->ocean_speed_frac : this->canal_speed_frac)) / 256;
82  }
83 };
84 
91  AIR_HELI = 0,
92  AIR_CTOL = 1,
93  AIR_FAST = 2
94 };
95 
98  byte image_index;
99  byte cost_factor;
100  byte running_cost;
101  byte subtype;
102  SoundID sfx;
103  byte acceleration;
104  uint16 max_speed;
107  uint16 max_range;
108 };
109 
112  byte image_index;
113  byte cost_factor;
114  byte running_cost;
115  Price running_cost_class;
116  SoundID sfx;
117  uint16 max_speed;
118  byte capacity;
119  uint8 weight;
120  uint8 power;
122  uint8 air_drag;
126 };
127 
132 struct EngineInfo {
136  byte decay_speed;
137  byte load_amount;
138  byte climates;
139  CargoID cargo_type;
140  CargoTypes refit_mask;
141  byte refit_cost;
142  byte misc_flags;
147 };
148 
162 };
163 
170 };
171 
172 static const uint MAX_LENGTH_ENGINE_NAME_CHARS = 32;
173 
174 static const EngineID INVALID_ENGINE = 0xFFFF;
175 
176 #endif /* ENGINE_TYPE_H */
Information about a ship vehicle.
Definition: engine_type.h:65
This vehicle is in the exclusive preview stage, either being used or being offered to a company...
Definition: engine_type.h:169
Enums and other types related to roads.
byte ocean_speed_frac
Fraction of maximum speed for ocean tiles.
Definition: engine_type.h:74
Conventional Take Off and Landing, i.e. planes.
Definition: engine_type.h:92
Do not show black smoke during a breakdown.
Definition: engine_type.h:160
EngineFlags
Engine.flags is a bitmask, with the following values.
Definition: engine_type.h:167
Rail vehicle can be flipped in the depot.
Definition: engine_type.h:157
uint ApplyWaterClassSpeedFrac(uint raw_speed, bool is_ocean) const
Apply ocean/canal speed fraction to a velocity.
Definition: engine_type.h:78
byte visual_effect
Bitstuffed NewGRF visual effect data.
Definition: engine_type.h:123
Price
Enumeration of all base prices for use with Prices.
Definition: economy_type.h:65
EngineClass
Type of rail engine.
Definition: engine_type.h:33
Rail vehicle tilts in curves.
Definition: engine_type.h:153
byte pow_wag_weight
Extra weight applied to consist if wagon should be powered.
Definition: engine_type.h:56
int32 Year
Type for the year, note: 0 based, i.e. starts at the year 0.
Definition: date_type.h:18
RoadType
The different roadtypes we support.
Definition: road_type.h:22
Types related to cargoes...
EngineMiscFlags
EngineInfo.misc_flags is a bitmask, with the following values.
Definition: engine_type.h:152
Date base_intro
Basic date of engine introduction (without random parts).
Definition: engine_type.h:133
Year lifelength
Lifetime of a single vehicle.
Definition: engine_type.h:134
Maglev engine.
Definition: engine_type.h:38
uint16 max_speed
Maximum speed (1 unit = 8 mph = 12.8 km-ish/h)
Definition: engine_type.h:104
uint16 max_speed
Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
Definition: engine_type.h:68
Mono rail engine.
Definition: engine_type.h:37
Diesel rail engine.
Definition: engine_type.h:35
RoadType roadtype
Road type.
Definition: engine_type.h:125
Information about a vehicle.
Definition: engine_type.h:132
byte subtype
Type of aircraft.
Definition: engine_type.h:101
int8 retire_early
Number of years early to retire vehicle.
Definition: engine_type.h:144
Types related to the economy.
EngineClass engclass
Class of engine for this vehicle.
Definition: engine_type.h:52
uint16 pow_wag_power
Extra power applied to consist if wagon should be powered.
Definition: engine_type.h:55
uint16 max_speed
Maximum speed (1 unit = 1/1.6 mph = 1 km-ish/h)
Definition: engine_type.h:47
byte callback_mask
Bitmask of vehicle callbacks that have to be called.
Definition: engine_type.h:143
simple wagon, not motorized
Definition: engine_type.h:29
Rail vehicle is a multiple-unit (DMU/EMU)
Definition: engine_type.h:156
Draw vehicle by stacking multiple sprites.
Definition: engine_type.h:161
Vehicle uses two company colours.
Definition: engine_type.h:155
byte visual_effect
Bitstuffed NewGRF visual effect data.
Definition: engine_type.h:73
byte capacity
Cargo capacity of vehicle; For multiheaded engines the capacity of each single engine.
Definition: engine_type.h:53
uint8 tractive_effort
Coefficient of tractive effort.
Definition: engine_type.h:121
byte cost_factor
Purchase cost factor; For multiheaded engines the sum of both engine prices.
Definition: engine_type.h:45
byte misc_flags
Miscellaneous flags.
Definition: engine_type.h:142
byte shorten_factor
length on main map for this type is 8 - shorten_factor
Definition: engine_type.h:58
byte air_drag
Coefficient of air drag.
Definition: engine_type.h:60
uint8 weight
Weight in 1/4t units.
Definition: engine_type.h:119
uint32 StringID
Numeric value that represents a string, independent of the selected language.
Definition: strings_type.h:16
uint16 power
Power of engine (hp); For multiheaded engines the sum of both engine powers.
Definition: engine_type.h:48
Information about a rail vehicle.
Definition: engine_type.h:42
static const EngineID INVALID_ENGINE
Constant denoting an invalid engine.
Definition: engine_type.h:174
bool old_refittable
Is ship refittable; only used during initialisation. Later use EngineInfo::refit_mask.
Definition: engine_type.h:72
Automatic refitting is allowed.
Definition: engine_type.h:158
Information about a road vehicle.
Definition: engine_type.h:111
uint16 max_speed
Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
Definition: engine_type.h:117
RailType
Enumeration for all possible railtypes.
Definition: rail_type.h:27
indicates a "standalone" locomotive
Definition: engine_type.h:27
uint16 EngineID
Unique identification number of an engine.
Definition: engine_type.h:21
byte tractive_effort
Tractive effort coefficient.
Definition: engine_type.h:59
AircraftSubTypeBits
AircraftVehicleInfo subtypes, bitmask type.
Definition: engine_type.h:90
Information about a aircraft vehicle.
Definition: engine_type.h:97
indicates a combination of two locomotives
Definition: engine_type.h:28
uint8 power
Power in 10hp units.
Definition: engine_type.h:120
uint16 max_range
Maximum range of this aircraft.
Definition: engine_type.h:107
StringID string_id
Default name of engine.
Definition: engine_type.h:145
uint16 weight
Weight of vehicle (tons); For multiheaded engines the weight of each single engine.
Definition: engine_type.h:49
Types related to sounds.
byte shorten_factor
length on main map for this type is 8 - shorten_factor
Definition: engine_type.h:124
Types related to strings.
Types related to the dates in OpenTTD.
Steam rail engine.
Definition: engine_type.h:34
uint8 air_drag
Coefficient of air drag.
Definition: engine_type.h:122
int32 Date
The type to store our dates in.
Definition: date_type.h:14
byte CargoID
Cargo slots to indicate a cargo type within a game.
Definition: cargo_type.h:20
uint16 cargo_age_period
Number of ticks before carried cargo is aged.
Definition: engine_type.h:146
Year base_life
Basic duration of engine availability (without random parts). 0xFF means infinite life...
Definition: engine_type.h:135
Road vehicle is a tram/light rail vehicle.
Definition: engine_type.h:154
static const uint MAX_LENGTH_ENGINE_NAME_CHARS
The maximum length of an engine name in characters including &#39;\0&#39;.
Definition: engine_type.h:172
This vehicle is available to everyone.
Definition: engine_type.h:168
byte ai_passenger_only
Bit value to tell AI that this engine is for passenger use only.
Definition: engine_type.h:54
Use the new capacity algorithm. The default cargotype of the vehicle does not affect capacity multipl...
Definition: engine_type.h:159
byte running_cost
Running cost of engine; For multiheaded engines the sum of both running costs.
Definition: engine_type.h:50
byte climates
Climates supported by the engine.
Definition: engine_type.h:138
byte canal_speed_frac
Fraction of maximum speed for canal/river tiles.
Definition: engine_type.h:75
byte user_def_data
Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles.
Definition: engine_type.h:61
uint16 passenger_capacity
Passenger capacity (persons).
Definition: engine_type.h:106
RailVehicleTypes
Available types of rail vehicles.
Definition: engine_type.h:26
byte mail_capacity
Mail capacity (bags).
Definition: engine_type.h:105
byte visual_effect
Bitstuffed NewGRF visual effect data.
Definition: engine_type.h:57
Electric rail engine.
Definition: engine_type.h:36
The different types of rail.