author | tron |
Mon, 05 Jun 2006 11:28:00 +0000 | |
changeset 3961 | e2783f244ac6 |
parent 3924 | de86db4fbd1e |
child 4056 | 30ceffc75059 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
2962
dbd168a4703a
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2848
diff
changeset
|
3 |
#ifndef NEWGRF_ENGINE_H |
dbd168a4703a
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2848
diff
changeset
|
4 |
#define NEWGRF_ENGINE_H |
0 | 5 |
|
3157
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
2982
diff
changeset
|
6 |
#include "direction.h" |
3866
113de2b20059
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
7 |
#include "newgrf_cargo.h" |
3157
40de8616c04c
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
2982
diff
changeset
|
8 |
|
2962
dbd168a4703a
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2848
diff
changeset
|
9 |
/** @file newgrf_engine.h |
dbd168a4703a
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2848
diff
changeset
|
10 |
*/ |
0 | 11 |
|
3785
1becd6b333fe
(svn r4781) - NewGRF: give _traininfo_vehicle_pitch a proper declaration
peter1138
parents:
3726
diff
changeset
|
12 |
extern int _traininfo_vehicle_pitch; |
3845
c3cd4b825c2f
(svn r4869) - NewGRF: support setting train list vehicle width to 32 instead of 29 pixels, for sets which use 32 pixel long engines/wagons.
peter1138
parents:
3785
diff
changeset
|
13 |
extern int _traininfo_vehicle_width; |
3785
1becd6b333fe
(svn r4781) - NewGRF: give _traininfo_vehicle_pitch a proper declaration
peter1138
parents:
3726
diff
changeset
|
14 |
|
1802
448f187042d3
(svn r2306) - CodeChange: Check the last commands; refits. This needed an extensive rewrite and global/local-cargo ID juggling and bitmasking. However with this done it looks better as well and is compatible with newgrf handling. Big thanks to HackyKid for doing most of the work. This also closes patch "[ 1199277 ] Command checks"
Darkvater
parents:
1786
diff
changeset
|
15 |
VARDEF const uint32 _default_refitmasks[NUM_VEHICLE_TYPES]; |
3866
113de2b20059
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
16 |
extern const CargoID _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO]; |
113de2b20059
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
17 |
extern const uint32 _landscape_global_cargo_mask[NUM_LANDSCAPE]; |
113de2b20059
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
18 |
extern const CargoID _local_cargo_id_ctype[NUM_GLOBAL_CID]; |
113de2b20059
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
19 |
extern const uint32 cargo_classes[16]; |
0 | 20 |
|
3693
af2ee9b328e6
(svn r4629) - NewGRF: constify more code that deals with sprite groups, now that ref counting is gone.
peter1138
parents:
3684
diff
changeset
|
21 |
void SetWagonOverrideSprites(EngineID engine, const struct SpriteGroup *group, byte *train_id, int trains); |
af2ee9b328e6
(svn r4629) - NewGRF: constify more code that deals with sprite groups, now that ref counting is gone.
peter1138
parents:
3684
diff
changeset
|
22 |
void SetCustomEngineSprites(EngineID engine, byte cargo, const struct SpriteGroup *group); |
3695
aae28fa7190e
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
23 |
void SetRotorOverrideSprites(EngineID engine, const struct SpriteGroup *group); |
3684
c5dfac322f16
(svn r4609) - NewGRF: give GetCustomEngineSprite the correct return type
peter1138
parents:
3648
diff
changeset
|
24 |
SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction); |
3695
aae28fa7190e
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
25 |
SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle* v); |
aae28fa7190e
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
26 |
#define GetCustomRotorSprite(v) GetRotorOverrideSprite(v->engine_type, v) |
aae28fa7190e
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
27 |
#define GetCustomRotorIcon(et) GetRotorOverrideSprite(et, NULL) |
3648
1574c89384cb
(svn r4559) - NewGRF: keep a record of which grf an engine is defined in. Will be used in the future.
peter1138
parents:
3604
diff
changeset
|
28 |
|
3924
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
29 |
/* Forward declaration of GRFFile, to avoid unnecessary inclusion of newgrf.h |
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
30 |
* elsewhere... */ |
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
31 |
struct GRFFile; |
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
32 |
|
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
33 |
void SetEngineGRF(EngineID engine, const struct GRFFile *file); |
de86db4fbd1e
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
34 |
const struct GRFFile *GetEngineGRF(EngineID engine); |
3648
1574c89384cb
(svn r4559) - NewGRF: keep a record of which grf an engine is defined in. Will be used in the future.
peter1138
parents:
3604
diff
changeset
|
35 |
uint32 GetEngineGRFID(EngineID engine); |
1574c89384cb
(svn r4559) - NewGRF: keep a record of which grf an engine is defined in. Will be used in the future.
peter1138
parents:
3604
diff
changeset
|
36 |
|
3725
1b5ce8c7b51f
(svn r4698) - When selecting files to commit, select the correct ones... missed header file update in r4697
peter1138
parents:
3695
diff
changeset
|
37 |
uint16 GetVehicleCallback(uint16 callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v); |
3726
a446208c7296
(svn r4702) - NewGRF: add support for 'special' vehicle callbacks that use a different vehicle for parent scope than the first vehicle in the consist.
peter1138
parents:
3725
diff
changeset
|
38 |
uint16 GetVehicleCallbackParent(uint16 callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent); |
1908
bc48a30aba72
(svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents:
1895
diff
changeset
|
39 |
bool UsesWagonOverride(const Vehicle *v); |
414
e18cc252e2ea
(svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky).
darkvater
parents:
405
diff
changeset
|
40 |
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) |
e18cc252e2ea
(svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky).
darkvater
parents:
405
diff
changeset
|
41 |
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction) |
0 | 42 |
|
1477 | 43 |
typedef enum VehicleTrigger { |
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
44 |
VEHICLE_TRIGGER_NEW_CARGO = 1, |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
45 |
// Externally triggered only for the first vehicle in chain |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
46 |
VEHICLE_TRIGGER_DEPOT = 2, |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
47 |
// Externally triggered only for the first vehicle in chain, only if whole chain is empty |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
48 |
VEHICLE_TRIGGER_EMPTY = 4, |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
49 |
// Not triggered externally (called for the whole chain if we got NEW_CARGO) |
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
50 |
VEHICLE_TRIGGER_ANY_NEW_CARGO = 8, |
1477 | 51 |
} VehicleTrigger; |
52 |
void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger); |
|
445
0e3fa3da3899
(svn r654) Hopefully complete support for randomized variational spritegroups (i.e. the cars transporter in DBSetXL gets different cars each time) (pasky)
tron
parents:
414
diff
changeset
|
53 |
|
3604
d28877422030
(svn r4496) - NewGRF: switch custom engine names from storing a char* to using the new StringID based text system. Vehicle name
peter1138
parents:
3390
diff
changeset
|
54 |
void SetCustomEngineName(EngineID engine, StringID name); |
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
|
55 |
StringID GetCustomEngineName(EngineID engine); |
0 | 56 |
|
2491
dfe9542f783e
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
57 |
void UnloadWagonOverrides(void); |
3695
aae28fa7190e
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
58 |
void UnloadRotorOverrideSprites(void); |
2491
dfe9542f783e
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
59 |
void UnloadCustomEngineSprites(void); |
2769
acea0abd2195
(svn r3316) - NewGRF: Unload engine names before loading grf files. This fixes names in climates where the engines don't get loaded. Renamed function to reflect its purpose.
peter1138
parents:
2763
diff
changeset
|
60 |
void UnloadCustomEngineNames(void); |
2491
dfe9542f783e
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
61 |
|
2971
9b62397dbd56
(svn r3546) - NewGRF feature: Implement rail vehicle 'property' 0x1A: allows shuffling order of rail vehicle purchase list (and replace vehicle list)
peter1138
parents:
2962
diff
changeset
|
62 |
void ResetEngineListOrder(void); |
9b62397dbd56
(svn r3546) - NewGRF feature: Implement rail vehicle 'property' 0x1A: allows shuffling order of rail vehicle purchase list (and replace vehicle list)
peter1138
parents:
2962
diff
changeset
|
63 |
EngineID GetRailVehAtPosition(EngineID pos); |
9b62397dbd56
(svn r3546) - NewGRF feature: Implement rail vehicle 'property' 0x1A: allows shuffling order of rail vehicle purchase list (and replace vehicle list)
peter1138
parents:
2962
diff
changeset
|
64 |
void AlterRailVehListOrder(EngineID engine, EngineID target); |
9b62397dbd56
(svn r3546) - NewGRF feature: Implement rail vehicle 'property' 0x1A: allows shuffling order of rail vehicle purchase list (and replace vehicle list)
peter1138
parents:
2962
diff
changeset
|
65 |
|
2962
dbd168a4703a
(svn r3524) - Split newgrf features from engine.[ch] into newgrf_engine.[ch], and add the new files to project files.
peter1138
parents:
2848
diff
changeset
|
66 |
#endif /* NEWGRF_ENGINE_H */ |