author | convert-repo |
Mon, 07 Apr 2008 16:21:55 +0000 | |
changeset 10076 | dfd70e42c4ae |
parent 9282 | 2bb9703aeb39 |
child 10255 | 5600b575e6e7 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
6451
7baba06b4b85
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas
parents:
6206
diff
changeset
|
3 |
/** @file engine.h */ |
7baba06b4b85
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
belugas
parents:
6206
diff
changeset
|
4 |
|
0 | 5 |
#ifndef ENGINE_H |
6 |
#define ENGINE_H |
|
7 |
||
9273
ca5e00698c01
(svn r12476) -Codechange: split type engine related types from engine.h (and openttd.h) to engine_type.h.
rubidium
parents:
9270
diff
changeset
|
8 |
#include "engine_type.h" |
2848 | 9 |
|
8717
de56e5ec3aec
(svn r11784) -Codechange: set up initial engine data in one place
peter1138
parents:
8708
diff
changeset
|
10 |
void SetupEngines(); |
6573 | 11 |
void StartupEngines(); |
0 | 12 |
|
13 |
||
5919
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5838
diff
changeset
|
14 |
void DrawTrainEngine(int x, int y, EngineID engine, SpriteID pal); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5838
diff
changeset
|
15 |
void DrawRoadVehEngine(int x, int y, EngineID engine, SpriteID pal); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5838
diff
changeset
|
16 |
void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal); |
2b58160d667d
(svn r8128) -Codechange: Split sprite and palette remap into separate 32 bit values.
peter1138
parents:
5838
diff
changeset
|
17 |
void DrawAircraftEngine(int x, int y, EngineID engine, SpriteID pal); |
0 | 18 |
|
6573 | 19 |
void LoadCustomEngineNames(); |
20 |
void DeleteCustomEngineNames(); |
|
0 | 21 |
|
8975
303deb99982d
(svn r12054) -Cleanup: Use VehicleType instead of byte for vehicle types...
peter1138
parents:
8945
diff
changeset
|
22 |
bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player); |
7001
d5f19455d650
(svn r9688) -Codechange: Created a function to get default cargo type for a cargo type
bjarni
parents:
6984
diff
changeset
|
23 |
CargoID GetEngineCargoType(EngineID engine); |
0 | 24 |
|
8975
303deb99982d
(svn r12054) -Cleanup: Use VehicleType instead of byte for vehicle types...
peter1138
parents:
8945
diff
changeset
|
25 |
static inline EngineID GetFirstEngineOfType(VehicleType type) |
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
26 |
{ |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
27 |
const EngineID start[] = {0, ROAD_ENGINES_INDEX, SHIP_ENGINES_INDEX, AIRCRAFT_ENGINES_INDEX}; |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
28 |
|
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
29 |
return start[type]; |
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
30 |
} |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
31 |
|
8975
303deb99982d
(svn r12054) -Cleanup: Use VehicleType instead of byte for vehicle types...
peter1138
parents:
8945
diff
changeset
|
32 |
static inline EngineID GetLastEngineOfType(VehicleType type) |
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
33 |
{ |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
34 |
const EngineID end[] = { |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
35 |
NUM_TRAIN_ENGINES, |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
36 |
ROAD_ENGINES_INDEX + NUM_ROAD_ENGINES, |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
37 |
SHIP_ENGINES_INDEX + NUM_SHIP_ENGINES, |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
38 |
AIRCRAFT_ENGINES_INDEX + NUM_AIRCRAFT_ENGINES}; |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
39 |
|
6206
67358999d80d
(svn r8621) -Codechange: assigned new numbers to the VEH_(type) enum so that VEH_Train is 0, VEH_Road is 1 and so on
bjarni
parents:
6195
diff
changeset
|
40 |
return end[type]; |
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
41 |
} |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
42 |
|
8764
65746a5248ec
(svn r11832) -Codechange: get rid of (quite) some VARDEFs.
rubidium
parents:
8760
diff
changeset
|
43 |
extern Engine _engines[TOTAL_NUM_ENGINES]; |
1786
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
44 |
#define FOR_ALL_ENGINES(e) for (e = _engines; e != endof(_engines); e++) |
6195
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
45 |
#define FOR_ALL_ENGINEIDS_OF_TYPE(e, type) for (e = GetFirstEngineOfType(type); e != GetLastEngineOfType(type); e++) |
b90cf92697b9
(svn r8610) -Codechange/Feature: rewrote the list handling in the autoreplace window
bjarni
parents:
6119
diff
changeset
|
46 |
|
1926
68d60188a22f
(svn r2432) Use GetEngine() instead of DEREF_ENGINE() or even _engines[]
tron
parents:
1922
diff
changeset
|
47 |
|
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
48 |
static inline Engine* GetEngine(EngineID i) |
1786
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
49 |
{ |
4077
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4023
diff
changeset
|
50 |
assert(i < lengthof(_engines)); |
d3022f976946
(svn r5391) Miscellaneous, mostly bracing and whitespace, nothing spectacular
tron
parents:
4023
diff
changeset
|
51 |
return &_engines[i]; |
1786
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
52 |
} |
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
53 |
|
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
54 |
static inline bool IsEngineIndex(uint index) |
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
55 |
{ |
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
56 |
return index < TOTAL_NUM_ENGINES; |
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
57 |
} |
a54634efeb98
(svn r2290) - CodeChange: protect the next batch of commands. This brings us to a total of 61, which is 53% :)
Darkvater
parents:
1477
diff
changeset
|
58 |
|
376
1a4425a0a953
(svn r565) -newgrf: fixed double work of RoadVehicleInfo[]; added AircraftVehicleInfo[] as well. table/engines.h is now the same as in the _map branch.
darkvater
parents:
374
diff
changeset
|
59 |
/* Access Vehicle Data */ |
8722
30cffd0c4e40
(svn r11789) -Codechange: coding style for global variable names
peter1138
parents:
8717
diff
changeset
|
60 |
extern const EngineInfo _orig_engine_info[TOTAL_NUM_ENGINES]; |
30cffd0c4e40
(svn r11789) -Codechange: coding style for global variable names
peter1138
parents:
8717
diff
changeset
|
61 |
extern const RailVehicleInfo _orig_rail_vehicle_info[NUM_TRAIN_ENGINES]; |
30cffd0c4e40
(svn r11789) -Codechange: coding style for global variable names
peter1138
parents:
8717
diff
changeset
|
62 |
extern const ShipVehicleInfo _orig_ship_vehicle_info[NUM_SHIP_ENGINES]; |
30cffd0c4e40
(svn r11789) -Codechange: coding style for global variable names
peter1138
parents:
8717
diff
changeset
|
63 |
extern const AircraftVehicleInfo _orig_aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES]; |
30cffd0c4e40
(svn r11789) -Codechange: coding style for global variable names
peter1138
parents:
8717
diff
changeset
|
64 |
extern const RoadVehicleInfo _orig_road_vehicle_info[NUM_ROAD_ENGINES]; |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
65 |
|
2763 | 66 |
extern EngineInfo _engine_info[TOTAL_NUM_ENGINES]; |
67 |
extern RailVehicleInfo _rail_vehicle_info[NUM_TRAIN_ENGINES]; |
|
68 |
extern ShipVehicleInfo _ship_vehicle_info[NUM_SHIP_ENGINES]; |
|
69 |
extern AircraftVehicleInfo _aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES]; |
|
70 |
extern RoadVehicleInfo _road_vehicle_info[NUM_ROAD_ENGINES]; |
|
2463
de2605ed3758
(svn r2989) - Make engine/vehicle information tables constant. Duplicate them so NewGRF data can be loaded without wiping out the default data.
peter1138
parents:
2436
diff
changeset
|
71 |
|
3393
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
72 |
static inline const EngineInfo *EngInfo(EngineID e) |
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
73 |
{ |
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
74 |
assert(e < lengthof(_engine_info)); |
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
75 |
return &_engine_info[e]; |
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
76 |
} |
48ce4c723a76
(svn r4201) - Codechange: Do for _engine_info[] what we do for _*_vehicle_info[]; create and use a function to retrieve data, and ensure constness.
peter1138
parents:
3344
diff
changeset
|
77 |
|
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
78 |
static inline const RailVehicleInfo* RailVehInfo(EngineID e) |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
79 |
{ |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
80 |
assert(e < lengthof(_rail_vehicle_info)); |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
81 |
return &_rail_vehicle_info[e]; |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
82 |
} |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
83 |
|
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
84 |
static inline const ShipVehicleInfo* ShipVehInfo(EngineID e) |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
85 |
{ |
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
86 |
assert(e >= SHIP_ENGINES_INDEX && e < SHIP_ENGINES_INDEX + lengthof(_ship_vehicle_info)); |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
87 |
return &_ship_vehicle_info[e - SHIP_ENGINES_INDEX]; |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
88 |
} |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
89 |
|
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
90 |
static inline const AircraftVehicleInfo* AircraftVehInfo(EngineID e) |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
91 |
{ |
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
92 |
assert(e >= AIRCRAFT_ENGINES_INDEX && e < AIRCRAFT_ENGINES_INDEX + lengthof(_aircraft_vehicle_info)); |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
93 |
return &_aircraft_vehicle_info[e - AIRCRAFT_ENGINES_INDEX]; |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
94 |
} |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
95 |
|
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
96 |
static inline const RoadVehicleInfo* RoadVehInfo(EngineID e) |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
97 |
{ |
2477
d454d5152386
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
98 |
assert(e >= ROAD_ENGINES_INDEX && e < ROAD_ENGINES_INDEX + lengthof(_road_vehicle_info)); |
538
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
99 |
return &_road_vehicle_info[e - ROAD_ENGINES_INDEX]; |
5dd99f3b7eca
(svn r920) Replace vehicle info macros with inline functions and add asserts to check limits
tron
parents:
445
diff
changeset
|
100 |
} |
405
6830ae7a0d5d
(svn r602) -newgrf: Move DrawTileSeqStruct & co and struct SpriteGroup to sprite.h (pasky)
darkvater
parents:
389
diff
changeset
|
101 |
|
5187
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
102 |
/* Engine list manipulators - current implementation is only C wrapper of CBlobT<EngineID> class (helpers.cpp) */ |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
103 |
void EngList_Create(EngineList *el); ///< Creates engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
104 |
void EngList_Destroy(EngineList *el); ///< Deallocate and destroy engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
105 |
uint EngList_Count(const EngineList *el); ///< Returns number of items in the engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
106 |
void EngList_Add(EngineList *el, EngineID eid); ///< Append one item at the end of engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
107 |
EngineID* EngList_Items(EngineList *el); ///< Returns engine list items as C array |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
108 |
void EngList_RemoveAll(EngineList *el); ///< Removes all items from engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
109 |
typedef int CDECL EngList_SortTypeFunction(const void*, const void*); ///< argument type for EngList_Sort() |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
110 |
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare); ///< qsort of the engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
111 |
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items); ///< qsort of specified portion of the engine list |
d1f4e447a7eb
(svn r7299) -CodeChange: Train and Aircraft Build window GUI code simplified a bit:
KUDr
parents:
5037
diff
changeset
|
112 |
|
2436
177cb6a8339f
(svn r2962) - const correctness for all Get* functions and most Draw* functions that don't change their pointer parameters
Darkvater
parents:
2331
diff
changeset
|
113 |
#endif /* ENGINE_H */ |