author | rubidium |
Thu, 01 Feb 2007 15:49:12 +0000 | |
changeset 5893 | 7e431a4abebb |
parent 5547 | eba5703374cd |
child 6247 | 7d81e3a5d803 |
permissions | -rw-r--r-- |
2186 | 1 |
/* $Id$ */ |
2 |
||
2962
f0a49b646c48
(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 |
f0a49b646c48
(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 |
|
4656
9c1d8c4d3e60
(svn r6532) - Feature: Add support for NewGRF sound effects. Currently sound priority isn't supported.
peter1138
parents:
4344
diff
changeset
|
6 |
#include "newgrf.h" |
3157
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
2982
diff
changeset
|
7 |
#include "direction.h" |
3866
b13553406a0a
(svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents:
3845
diff
changeset
|
8 |
#include "newgrf_cargo.h" |
3157
3f35e2d9c8e3
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
tron
parents:
2982
diff
changeset
|
9 |
|
2962
f0a49b646c48
(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 |
/** @file newgrf_engine.h |
f0a49b646c48
(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
|
11 |
*/ |
0 | 12 |
|
3785
7d4c0a7850b2
(svn r4781) - NewGRF: give _traininfo_vehicle_pitch a proper declaration
peter1138
parents:
3726
diff
changeset
|
13 |
extern int _traininfo_vehicle_pitch; |
3845
af6eb0103fed
(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
|
14 |
extern int _traininfo_vehicle_width; |
3785
7d4c0a7850b2
(svn r4781) - NewGRF: give _traininfo_vehicle_pitch a proper declaration
peter1138
parents:
3726
diff
changeset
|
15 |
|
0 | 16 |
|
4869
3a75d9b3b5ea
(svn r6795) - NewGRF: Add support for cargo-specific wagon overrides.
peter1138
parents:
4812
diff
changeset
|
17 |
void SetWagonOverrideSprites(EngineID engine, CargoID cargo, const struct SpriteGroup *group, byte *train_id, int trains); |
3693
c154dbd20439
(svn r4629) - NewGRF: constify more code that deals with sprite groups, now that ref counting is gone.
peter1138
parents:
3684
diff
changeset
|
18 |
void SetCustomEngineSprites(EngineID engine, byte cargo, const struct SpriteGroup *group); |
3695
e1d5608f4d32
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
19 |
void SetRotorOverrideSprites(EngineID engine, const struct SpriteGroup *group); |
3684
4bb59d048c6e
(svn r4609) - NewGRF: give GetCustomEngineSprite the correct return type
peter1138
parents:
3648
diff
changeset
|
20 |
SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction); |
4056
7899dc230a12
(svn r5336) - NewGRF: draw custom helicopter rotor sprites in vehicle info window, ensuring the correct direction is used (inspiration from mart3p)
peter1138
parents:
3924
diff
changeset
|
21 |
SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle* v, bool info_view); |
7899dc230a12
(svn r5336) - NewGRF: draw custom helicopter rotor sprites in vehicle info window, ensuring the correct direction is used (inspiration from mart3p)
peter1138
parents:
3924
diff
changeset
|
22 |
#define GetCustomRotorSprite(v, i) GetRotorOverrideSprite(v->engine_type, v, i) |
7899dc230a12
(svn r5336) - NewGRF: draw custom helicopter rotor sprites in vehicle info window, ensuring the correct direction is used (inspiration from mart3p)
peter1138
parents:
3924
diff
changeset
|
23 |
#define GetCustomRotorIcon(et) GetRotorOverrideSprite(et, NULL, true) |
3648
d234c46bb37a
(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
|
24 |
|
3924
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
25 |
/* Forward declaration of GRFFile, to avoid unnecessary inclusion of newgrf.h |
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
26 |
* elsewhere... */ |
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
27 |
struct GRFFile; |
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
28 |
|
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
29 |
void SetEngineGRF(EngineID engine, const struct GRFFile *file); |
d06b513d65c3
(svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents:
3866
diff
changeset
|
30 |
const struct GRFFile *GetEngineGRF(EngineID engine); |
3648
d234c46bb37a
(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
|
31 |
uint32 GetEngineGRFID(EngineID engine); |
d234c46bb37a
(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
|
32 |
|
3725
f9dee421fb32
(svn r4698) - When selecting files to commit, select the correct ones... missed header file update in r4697
peter1138
parents:
3695
diff
changeset
|
33 |
uint16 GetVehicleCallback(uint16 callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v); |
3726
f44617056b8f
(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
|
34 |
uint16 GetVehicleCallbackParent(uint16 callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v, const Vehicle *parent); |
1908
2fa391fed79a
(svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents:
1895
diff
changeset
|
35 |
bool UsesWagonOverride(const Vehicle *v); |
414
4629d4bf7f14
(svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky).
darkvater
parents:
405
diff
changeset
|
36 |
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) |
4629d4bf7f14
(svn r611) -newgrf: Change GetCustomEngineSprite() calling convention (invisible to users of GetCustomVehicle*() wrappers). Needed for deterministic spritegroups support (pasky).
darkvater
parents:
405
diff
changeset
|
37 |
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction) |
0 | 38 |
|
1477 | 39 |
typedef enum VehicleTrigger { |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4056
diff
changeset
|
40 |
VEHICLE_TRIGGER_NEW_CARGO = 1, |
445
beafc0fb8f12
(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
|
41 |
// Externally triggered only for the first vehicle in chain |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4056
diff
changeset
|
42 |
VEHICLE_TRIGGER_DEPOT = 2, |
445
beafc0fb8f12
(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
|
43 |
// Externally triggered only for the first vehicle in chain, only if whole chain is empty |
4344
7e123fec5b0b
(svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents:
4056
diff
changeset
|
44 |
VEHICLE_TRIGGER_EMPTY = 4, |
445
beafc0fb8f12
(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 |
// Not triggered externally (called for the whole chain if we got NEW_CARGO) |
beafc0fb8f12
(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_ANY_NEW_CARGO = 8, |
1477 | 47 |
} VehicleTrigger; |
48 |
void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger); |
|
445
beafc0fb8f12
(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 |
|
3604
1e7d9f584f93
(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
|
50 |
void SetCustomEngineName(EngineID engine, StringID name); |
2477
225b2916fe2a
(svn r3003) Change int, uint, uin16 and byte to EngineID where appropriate, plus some related changes (mostly casts)
tron
parents:
2464
diff
changeset
|
51 |
StringID GetCustomEngineName(EngineID engine); |
0 | 52 |
|
2491
15a117630a4f
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
53 |
void UnloadWagonOverrides(void); |
3695
e1d5608f4d32
(svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents:
3693
diff
changeset
|
54 |
void UnloadRotorOverrideSprites(void); |
2491
15a117630a4f
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
55 |
void UnloadCustomEngineSprites(void); |
2769
eab49a86038e
(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
|
56 |
void UnloadCustomEngineNames(void); |
2491
15a117630a4f
(svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents:
2477
diff
changeset
|
57 |
|
2971
cae3a81e8674
(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
|
58 |
void ResetEngineListOrder(void); |
cae3a81e8674
(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
|
59 |
EngineID GetRailVehAtPosition(EngineID pos); |
4812
d71b2e7d11e0
(svn r6736) - Add a function to get the list position of an engine ID, for use with sorting. This is basically a reversed version of GetRailVehAtPosition()
peter1138
parents:
4656
diff
changeset
|
60 |
uint16 ListPositionOfEngine(EngineID engine); |
2971
cae3a81e8674
(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
|
61 |
void AlterRailVehListOrder(EngineID engine, EngineID target); |
cae3a81e8674
(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 |
|
2962
f0a49b646c48
(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
|
63 |
#endif /* NEWGRF_ENGINE_H */ |