Mercurial > hg > openttd
annotate src/newgrf_engine.h @ 10499:45ca88a8de7d draft
(svn r14754) -Codechange: get rid of _cmd_text and just pass it as (optional) parameter.
author | rubidium <rubidium@openttd.org> |
---|---|
date | Sun, 28 Dec 2008 14:37:19 +0000 (2008-12-28) |
parents | 28e252610709 |
children | 592ae9307430 |
rev | line source |
---|---|
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
1 /* $Id$ */ |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
2 |
9111
d48433370037
(svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium <rubidium@openttd.org>
parents:
9073
diff
changeset
|
3 /** @file newgrf_engine.h Functions for NewGRF engines. */ |
6348
bcf98ba27bbf
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
4 |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
5 #ifndef NEWGRF_ENGINE_H |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
6 #define NEWGRF_ENGINE_H |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
7 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
8 #include "newgrf.h" |
8100
6d739a5490a9
(svn r11661) -Codechange: some header reworks in order to try to reduce the compile time of OpenTTD by reduce the amount of circular-ish dependencies.
rubidium <rubidium@openttd.org>
parents:
7856
diff
changeset
|
9 #include "direction_type.h" |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
10 #include "newgrf_cargo.h" |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
11 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
12 extern int _traininfo_vehicle_pitch; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
13 extern int _traininfo_vehicle_width; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
14 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
15 |
8198
dbc8b8dbeda4
(svn r11761) -Codechange: Use appropriate variable types for NewGRF engine overrides, and adjust scope while there.
peter1138 <peter1138@openttd.org>
parents:
8100
diff
changeset
|
16 void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const struct SpriteGroup *group, EngineID *train_id, uint trains); |
dbc8b8dbeda4
(svn r11761) -Codechange: Use appropriate variable types for NewGRF engine overrides, and adjust scope while there.
peter1138 <peter1138@openttd.org>
parents:
8100
diff
changeset
|
17 const SpriteGroup *GetWagonOverrideSpriteSet(EngineID engine, CargoID cargo, EngineID overriding_engine); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
18 void SetCustomEngineSprites(EngineID engine, byte cargo, const struct SpriteGroup *group); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
19 SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
20 SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle* v, bool info_view); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
21 #define GetCustomRotorSprite(v, i) GetRotorOverrideSprite(v->engine_type, v, i) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
22 #define GetCustomRotorIcon(et) GetRotorOverrideSprite(et, NULL, true) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
23 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
24 /* Forward declaration of GRFFile, to avoid unnecessary inclusion of newgrf.h |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
25 * elsewhere... */ |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
26 struct GRFFile; |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
27 |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
28 void SetEngineGRF(EngineID engine, const struct GRFFile *file); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
29 const struct GRFFile *GetEngineGRF(EngineID engine); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
30 uint32 GetEngineGRFID(EngineID engine); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
31 |
7327
0ab2820a1e52
(svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium <rubidium@openttd.org>
parents:
6603
diff
changeset
|
32 uint16 GetVehicleCallback(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v); |
0ab2820a1e52
(svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium <rubidium@openttd.org>
parents:
6603
diff
changeset
|
33 uint16 GetVehicleCallbackParent(CallbackID callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
34 bool UsesWagonOverride(const Vehicle *v); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
35 #define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
36 #define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction) |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
37 |
6490
fcc1843c68c6
(svn r9671) -Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static. Vehicle max speed and train power/te/running costs are adjustable.
peter1138 <peter1138@openttd.org>
parents:
6348
diff
changeset
|
38 /* Handler to Evaluate callback 36. If the callback fails (i.e. most of the |
fcc1843c68c6
(svn r9671) -Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static. Vehicle max speed and train power/te/running costs are adjustable.
peter1138 <peter1138@openttd.org>
parents:
6348
diff
changeset
|
39 * time) orig_value is returned */ |
fcc1843c68c6
(svn r9671) -Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static. Vehicle max speed and train power/te/running costs are adjustable.
peter1138 <peter1138@openttd.org>
parents:
6348
diff
changeset
|
40 uint GetVehicleProperty(const Vehicle *v, uint8 property, uint orig_value); |
6517
bfa6449a2b3a
(svn r9703) -Codechange: support callback 36 in vehicle purchase lists
peter1138 <peter1138@openttd.org>
parents:
6490
diff
changeset
|
41 uint GetEngineProperty(EngineID engine, uint8 property, uint orig_value); |
6490
fcc1843c68c6
(svn r9671) -Codechange: Implement NewGRF callback 36, which allows changing of various properties which were previously static. Vehicle max speed and train power/te/running costs are adjustable.
peter1138 <peter1138@openttd.org>
parents:
6348
diff
changeset
|
42 |
6248
0789677a15a0
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents:
6247
diff
changeset
|
43 enum VehicleTrigger { |
7856
cdcab4e1c890
(svn r11406) -Fix: wrong triggers would be activated on callback 32 for vehicles.
rubidium <rubidium@openttd.org>
parents:
7803
diff
changeset
|
44 VEHICLE_TRIGGER_NEW_CARGO = 0x01, |
6348
bcf98ba27bbf
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
45 /* Externally triggered only for the first vehicle in chain */ |
7856
cdcab4e1c890
(svn r11406) -Fix: wrong triggers would be activated on callback 32 for vehicles.
rubidium <rubidium@openttd.org>
parents:
7803
diff
changeset
|
46 VEHICLE_TRIGGER_DEPOT = 0x02, |
6348
bcf98ba27bbf
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
47 /* Externally triggered only for the first vehicle in chain, only if whole chain is empty */ |
7856
cdcab4e1c890
(svn r11406) -Fix: wrong triggers would be activated on callback 32 for vehicles.
rubidium <rubidium@openttd.org>
parents:
7803
diff
changeset
|
48 VEHICLE_TRIGGER_EMPTY = 0x04, |
6348
bcf98ba27bbf
(svn r9385) -Cleanup: doxygen changes. Today, we are exploring the letter N.
belugas <belugas@openttd.org>
parents:
6248
diff
changeset
|
49 /* Not triggered externally (called for the whole chain if we got NEW_CARGO) */ |
7856
cdcab4e1c890
(svn r11406) -Fix: wrong triggers would be activated on callback 32 for vehicles.
rubidium <rubidium@openttd.org>
parents:
7803
diff
changeset
|
50 VEHICLE_TRIGGER_ANY_NEW_CARGO = 0x08, |
7803
1ad76d7d65b8
(svn r11353) -Codechange: add support for newgrf callback 32
glx <glx@openttd.org>
parents:
7327
diff
changeset
|
51 /* Externally triggered for each vehicle in chain */ |
7856
cdcab4e1c890
(svn r11406) -Fix: wrong triggers would be activated on callback 32 for vehicles.
rubidium <rubidium@openttd.org>
parents:
7803
diff
changeset
|
52 VEHICLE_TRIGGER_CALLBACK_32 = 0x10, |
6248
0789677a15a0
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium <rubidium@openttd.org>
parents:
6247
diff
changeset
|
53 }; |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
54 void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger); |
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
55 |
9070
11b5b3f4175d
(svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138 <peter1138@openttd.org>
parents:
9046
diff
changeset
|
56 void UnloadWagonOverrides(Engine *e); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
57 |
9070
11b5b3f4175d
(svn r12924) -Feature: Introducing the so called 'engine pool' which primarily removes the fixed engine type limits and also happens to allow (with the patch option 'dynamic_engines') multiple NewGRF vehicle sets to coexist.
peter1138 <peter1138@openttd.org>
parents:
9046
diff
changeset
|
58 uint ListPositionOfEngine(EngineID engine); |
9672
28e252610709
(svn r13761) -Codechange: Remove dependency on rail for altering purchase list position (mostly function renaming)
peter1138 <peter1138@openttd.org>
parents:
9111
diff
changeset
|
59 void AlterVehicleListOrder(EngineID engine, EngineID target); |
28e252610709
(svn r13761) -Codechange: Remove dependency on rail for altering purchase list position (mostly function renaming)
peter1138 <peter1138@openttd.org>
parents:
9111
diff
changeset
|
60 void CommitVehicleListOrderChanges(); |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
61 |
9073
9d538b21af0b
(svn r12932) -Fix [FS#1970]: Articulated engines ignored GRF engine overrides.
peter1138 <peter1138@openttd.org>
parents:
9070
diff
changeset
|
62 EngineID GetNewEngineID(const GRFFile *file, VehicleType type, uint16 internal_id); |
9d538b21af0b
(svn r12932) -Fix [FS#1970]: Articulated engines ignored GRF engine overrides.
peter1138 <peter1138@openttd.org>
parents:
9070
diff
changeset
|
63 |
5475
eabf4b86aed6
(svn r7759) -Merge: makefile rewrite. This merge features:
rubidium <rubidium@openttd.org>
parents:
diff
changeset
|
64 #endif /* NEWGRF_ENGINE_H */ |