Files
@ r16303:9fce015471e1
Branch filter:
Location: cpp/openttd-patchpack/source/src/engine_type.h - annotation
r16303:9fce015471e1
5.7 KiB
text/x-c
(svn r21021) -Add [FS#4171]: Center industry gui and waypoint gui after resize (partly by Krille).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | r8777:59b04e504aa5 r8777:59b04e504aa5 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r13476:add6db25d711 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r9070:e059c65164f3 r9070:e059c65164f3 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r9923:fd1b105946d0 r8777:59b04e504aa5 r15298:17db9e039ab9 r15298:17db9e039ab9 r15298:17db9e039ab9 r9720:6d491d07d0a8 r13476:add6db25d711 r8777:59b04e504aa5 r9720:6d491d07d0a8 r11479:dec827fa3319 r11479:dec827fa3319 r11479:dec827fa3319 r11479:dec827fa3319 r11479:dec827fa3319 r11479:dec827fa3319 r15626:21d8c9ada4af r11479:dec827fa3319 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r9923:fd1b105946d0 r15298:17db9e039ab9 r8777:59b04e504aa5 r8777:59b04e504aa5 r11932:f2bc1b879057 r13183:9f8ce87db9c1 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r15173:a59afd6301a6 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r9923:fd1b105946d0 r8777:59b04e504aa5 r8777:59b04e504aa5 r11932:f2bc1b879057 r8777:59b04e504aa5 r15298:17db9e039ab9 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r9923:fd1b105946d0 r8777:59b04e504aa5 r13476:add6db25d711 r11932:f2bc1b879057 r15298:17db9e039ab9 r8777:59b04e504aa5 r10982:d76e5db67170 r10982:d76e5db67170 r10982:d76e5db67170 r10982:d76e5db67170 r8777:59b04e504aa5 r8777:59b04e504aa5 r15610:623a23fb6560 r15610:623a23fb6560 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r15298:17db9e039ab9 r15298:17db9e039ab9 r9468:a092e2eb1209 r8777:59b04e504aa5 r8777:59b04e504aa5 r12733:799714c0c280 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r13026:0c3f00ec0a74 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r15173:a59afd6301a6 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r15173:a59afd6301a6 r8777:59b04e504aa5 r10207:a1fc2f2a33db r10207:a1fc2f2a33db r8777:59b04e504aa5 r8777:59b04e504aa5 r15173:a59afd6301a6 r15173:a59afd6301a6 r15173:a59afd6301a6 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 r8777:59b04e504aa5 | /* $Id$ */
/*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/** @file engine_type.h Types related to engines. */
#ifndef ENGINE_TYPE_H
#define ENGINE_TYPE_H
#include "economy_type.h"
#include "rail_type.h"
#include "cargo_type.h"
#include "date_type.h"
#include "sound_type.h"
#include "strings_type.h"
typedef uint16 EngineID;
struct Engine;
enum RailVehicleTypes {
RAILVEH_SINGLEHEAD, ///< indicates a "standalone" locomotive
RAILVEH_MULTIHEAD, ///< indicates a combination of two locomotives
RAILVEH_WAGON, ///< simple wagon, not motorized
};
enum EngineClass {
EC_STEAM,
EC_DIESEL,
EC_ELECTRIC,
EC_MONORAIL,
EC_MAGLEV,
};
struct RailVehicleInfo {
byte image_index;
RailVehicleTypes railveh_type;
byte cost_factor; ///< Purchase cost factor; For multiheaded engines the sum of both engine prices.
RailTypeByte railtype;
uint16 max_speed; ///< Maximum speed (1 unit = 1/1.6 mph = 1 km-ish/h)
uint16 power; ///< Power of engine (hp); For multiheaded engines the sum of both engine powers.
uint16 weight; ///< Weight of vehicle (tons); For multiheaded engines the weight of each single engine.
byte running_cost; ///< Running cost of engine; For multiheaded engines the sum of both running costs.
Price running_cost_class;
EngineClass engclass; ///< Class of engine for this vehicle
byte capacity; ///< Cargo capacity of vehicle; For multiheaded engines the capacity of each single engine.
byte ai_passenger_only; ///< Bit value to tell AI that this engine is for passenger use only
uint16 pow_wag_power; ///< Extra power applied to consist if wagon should be powered
byte pow_wag_weight; ///< Extra weight applied to consist if wagon should be powered
byte visual_effect; ///< Bitstuffed NewGRF visual effect data
byte shorten_factor; ///< length on main map for this type is 8 - shorten_factor
byte tractive_effort; ///< Tractive effort coefficient
byte air_drag; ///< Coefficient of air drag
byte user_def_data; ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles
};
struct ShipVehicleInfo {
byte image_index;
byte cost_factor;
uint16 max_speed; ///< Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
uint16 capacity;
byte running_cost;
SoundID sfx;
bool old_refittable; ///< Is ship refittable; only used during initialisation. Later use EngineInfo::refit_mask.
};
/* AircraftVehicleInfo subtypes, bitmask type.
* If bit 0 is 0 then it is a helicopter, otherwise it is a plane
* in which case bit 1 tells us whether it's a big(fast) plane or not */
enum AircraftSubTypeBits {
AIR_HELI = 0,
AIR_CTOL = 1, ///< Conventional Take Off and Landing, i.e. planes
AIR_FAST = 2
};
struct AircraftVehicleInfo {
byte image_index;
byte cost_factor;
byte running_cost;
byte subtype;
SoundID sfx;
byte acceleration;
uint16 max_speed; ///< Maximum speed (1 unit = 8 mph = 12.8 km-ish/h)
byte mail_capacity;
uint16 passenger_capacity;
};
struct RoadVehicleInfo {
byte image_index;
byte cost_factor;
byte running_cost;
Price running_cost_class;
SoundID sfx;
uint16 max_speed; ///< Maximum speed (1 unit = 1/3.2 mph = 0.5 km-ish/h)
byte capacity;
uint8 weight; ///< Weight in 1/4t units
uint8 power; ///< Power in 10hp units
uint8 tractive_effort; ///< Coefficient of tractive effort
uint8 air_drag; ///< Coefficient of air drag
};
/**
* Information about a vehicle
* @see table/engines.h
*/
struct EngineInfo {
Date base_intro;
Year lifelength; ///< Lifetime of a single vehicle
Year base_life; ///< Basic duration of engine availability (without random parts)
byte decay_speed;
byte load_amount;
byte climates;
CargoID cargo_type;
uint32 refit_mask;
byte refit_cost;
byte misc_flags;
byte callback_mask; ///< Bitmask of vehicle callbacks that have to be called
int8 retire_early; ///< Number of years early to retire vehicle
StringID string_id; ///< Default name of engine
};
/**
* EngineInfo.misc_flags is a bitmask, with the following values
*/
enum EngineMiscFlags {
EF_RAIL_TILTS = 0, ///< Rail vehicle tilts in curves
EF_ROAD_TRAM = 0, ///< Road vehicle is a tram/light rail vehicle
EF_USES_2CC = 1, ///< Vehicle uses two company colours
EF_RAIL_IS_MU = 2, ///< Rail vehicle is a multiple-unit (DMU/EMU)
};
/**
* Engine.flags is a bitmask, with the following values.
*/
enum EngineFlags {
ENGINE_AVAILABLE = 1, ///< This vehicle is available to everyone.
ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a company.
ENGINE_OFFER_WINDOW_OPEN = 4, ///< The exclusive offer window is currently open for a company.
};
static const uint NUM_VEHICLE_TYPES = 6;
static const uint MAX_LENGTH_ENGINE_NAME_BYTES = 31; ///< The maximum length of an engine name in bytes including '\0'
static const uint MAX_LENGTH_ENGINE_NAME_PIXELS = 160; ///< The maximum length of an engine name in pixels
static const EngineID INVALID_ENGINE = 0xFFFF;
#endif /* ENGINE_TYPE_H */
|