newgrf_engine.h
author glx
Sun, 08 Oct 2006 19:31:01 +0000
changeset 4777 bab9aa91c186
parent 4656 9c1d8c4d3e60
child 4812 d71b2e7d11e0
permissions -rw-r--r--
(svn r6691) -Fix r3907: check the transport type under the bridge when you want to get the road bits under a bridge (thanx hylje)
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2129
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2129
diff changeset
     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
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     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
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    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
1802
da61740cc1e7 (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
    16
VARDEF const uint32 _default_refitmasks[NUM_VEHICLE_TYPES];
3866
b13553406a0a (svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents: 3845
diff changeset
    17
extern const CargoID _global_cargo_id[NUM_LANDSCAPE][NUM_CARGO];
b13553406a0a (svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents: 3845
diff changeset
    18
extern const uint32 _landscape_global_cargo_mask[NUM_LANDSCAPE];
b13553406a0a (svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents: 3845
diff changeset
    19
extern const CargoID _local_cargo_id_ctype[NUM_GLOBAL_CID];
b13553406a0a (svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents: 3845
diff changeset
    20
extern const uint32 cargo_classes[16];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    21
3693
c154dbd20439 (svn r4629) - NewGRF: constify more code that deals with sprite groups, now that ref counting is gone.
peter1138
parents: 3684
diff changeset
    22
void SetWagonOverrideSprites(EngineID engine, const struct SpriteGroup *group, byte *train_id, int trains);
c154dbd20439 (svn r4629) - NewGRF: constify more code that deals with sprite groups, now that ref counting is gone.
peter1138
parents: 3684
diff changeset
    23
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
    24
void SetRotorOverrideSprites(EngineID engine, const struct SpriteGroup *group);
3684
4bb59d048c6e (svn r4609) - NewGRF: give GetCustomEngineSprite the correct return type
peter1138
parents: 3648
diff changeset
    25
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
    26
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
    27
#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
    28
#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
    29
3924
d06b513d65c3 (svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents: 3866
diff changeset
    30
/* 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
    31
 * elsewhere... */
d06b513d65c3 (svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents: 3866
diff changeset
    32
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
    33
d06b513d65c3 (svn r5059) - NewGRF: store a GRFFile pointer reference for each pointer, instead of just the GRF ID.
peter1138
parents: 3866
diff changeset
    34
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
    35
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
    36
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
    37
3725
f9dee421fb32 (svn r4698) - When selecting files to commit, select the correct ones... missed header file update in r4697
peter1138
parents: 3695
diff changeset
    38
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
    39
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
    40
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
    41
#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
    42
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    43
1477
9389baf2bf3c (svn r1981) Typedef some structs and enums
tron
parents: 1475
diff changeset
    44
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
    45
	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
    46
	// 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
    47
	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
    48
	// 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
    49
	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
    50
	// 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
    51
	VEHICLE_TRIGGER_ANY_NEW_CARGO = 8,
1477
9389baf2bf3c (svn r1981) Typedef some structs and enums
tron
parents: 1475
diff changeset
    52
} VehicleTrigger;
9389baf2bf3c (svn r1981) Typedef some structs and enums
tron
parents: 1475
diff changeset
    53
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
    54
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
    55
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
    56
StringID GetCustomEngineName(EngineID engine);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
2491
15a117630a4f (svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents: 2477
diff changeset
    58
void UnloadWagonOverrides(void);
3695
e1d5608f4d32 (svn r4632) - NewGRF: support loading of helicopter rotor sprites (mart3p)
peter1138
parents: 3693
diff changeset
    59
void UnloadRotorOverrideSprites(void);
2491
15a117630a4f (svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents: 2477
diff changeset
    60
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
    61
void UnloadCustomEngineNames(void);
2491
15a117630a4f (svn r3017) -NewGRF: Implement sprite group unreferencing and unloading.
peter1138
parents: 2477
diff changeset
    62
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
    63
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
    64
EngineID GetRailVehAtPosition(EngineID pos);
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
    65
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
    66
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
    67
#endif /* NEWGRF_ENGINE_H */