newgrf_callbacks.h
author tron
Mon, 05 Jun 2006 11:28:00 +0000
changeset 3961 e2783f244ac6
parent 3754 04356ae401b4
child 4244 44dcec623504
permissions -rw-r--r--
(svn r5120) Add IsShipInDepot{Stopped,}() and remove some redundant checks
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2129
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2129
diff changeset
     2
2982
286f69caaf05 (svn r3557) - NewGRF: move callback enums to a new file as more than just engines will use them
peter1138
parents: 2971
diff changeset
     3
#ifndef NEWGRF_CALLBACKS_H
286f69caaf05 (svn r3557) - NewGRF: move callback enums to a new file as more than just engines will use them
peter1138
parents: 2971
diff changeset
     4
#define NEWGRF_CALLBACKS_H
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
2982
286f69caaf05 (svn r3557) - NewGRF: move callback enums to a new file as more than just engines will use them
peter1138
parents: 2971
diff changeset
     6
/** @file newgrf_callbacks.h
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
     7
 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     8
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
     9
/**
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    10
 * List of implemented NewGRF callbacks.
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    11
 * Names are formatted as CBID_<CLASS>_<CALLBACK>
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    12
 */
1883
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    13
enum CallbackID {
1908
bc48a30aba72 (svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents: 1895
diff changeset
    14
	// Powered wagons, if the result is lower as 0x40 then the wagon is powered
bc48a30aba72 (svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents: 1895
diff changeset
    15
	// TODO: interpret the rest of the result, aka "visual effects"
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    16
	CBID_TRAIN_WAGON_POWER          = 0x10,
1908
bc48a30aba72 (svn r2414) - Feature: [newgrf] Implement powered wagons, and the callback that goes with it.
hackykid
parents: 1895
diff changeset
    17
1922
797081e56d13 (svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents: 1909
diff changeset
    18
	// Vehicle length, returns the amount of 1/8's the vehicle is shorter
797081e56d13 (svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents: 1909
diff changeset
    19
	// only for train vehicles
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    20
	CBID_TRAIN_VEHICLE_LENGTH       = 0x11,
1922
797081e56d13 (svn r2428) - Feature: [newgrf] Implement shorter train vehicles (Therax), and the callback that goes with it.
hackykid
parents: 1909
diff changeset
    21
3754
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    22
	/* Called (if appropriate bit in callback mask is set) to determine if a
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    23
	 * newstation should be made available to build */
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    24
	CBID_STATION_AVAILABILITY       = 0x13,
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    25
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    26
	/* Called (if appropriate bit in callback mask is set) when drawing a tile
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    27
	 * to choose a sprite layout to draw, instead of the standard 0-7 range */
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    28
	CBID_STATION_SPRITE_LAYOUT      = 0x14,
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    29
1883
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    30
	// Refit capacity, the passed vehicle needs to have its ->cargo_type set to
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    31
	// the cargo we are refitting to, returns the new cargo capacity
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    32
	CBID_VEHICLE_REFIT_CAPACITY     = 0x15,
2602
f0e2dcce3695 (svn r3139) -NewGRF, Feature: support for articulated rail vehicles. This is used, for example, by coal tenders.
peter1138
parents: 2542
diff changeset
    33
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    34
	CBID_TRAIN_ARTIC_ENGINE         = 0x16,
3650
92a3f5cae745 (svn r4561) - NewGRF: implement most of callback 0x23: additional text in vehicle purchase windows.
peter1138
parents: 3505
diff changeset
    35
3727
b4d9a8ab4ce4 (svn r4703) - NewGRF: add support for callback 0x1D, "can wagon be attached". This can be used to disallow freight wagons to be placed in passenger trains, along with other uses.
peter1138
parents: 3650
diff changeset
    36
	CBID_TRAIN_ALLOW_WAGON_ATTACH   = 0x1D,
b4d9a8ab4ce4 (svn r4703) - NewGRF: add support for callback 0x1D, "can wagon be attached". This can be used to disallow freight wagons to be placed in passenger trains, along with other uses.
peter1138
parents: 3650
diff changeset
    37
3650
92a3f5cae745 (svn r4561) - NewGRF: implement most of callback 0x23: additional text in vehicle purchase windows.
peter1138
parents: 3505
diff changeset
    38
	/* This callback is called from vehicle purchase lists. It returns a value to be
92a3f5cae745 (svn r4561) - NewGRF: implement most of callback 0x23: additional text in vehicle purchase windows.
peter1138
parents: 3505
diff changeset
    39
	 * used as a custom string ID in the 0xD000 range. */
92a3f5cae745 (svn r4561) - NewGRF: implement most of callback 0x23: additional text in vehicle purchase windows.
peter1138
parents: 3505
diff changeset
    40
	CBID_VEHICLE_ADDITIONAL_TEXT    = 0x23,
3754
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    41
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    42
	/* Called when building a station to customize the tile layout */
04356ae401b4 (svn r4742) - Newstations: Add callbacks for building and drawing custom stations.
peter1138
parents: 3727
diff changeset
    43
	CBID_STATION_TILE_LAYOUT        = 0x24,
1895
398f156479c8 (svn r2401) - Fix: [newgrf] Finish up callback mechanism, implement 'refit capacity' callback slightly more correct.
hackykid
parents: 1883
diff changeset
    44
};
398f156479c8 (svn r2401) - Fix: [newgrf] Finish up callback mechanism, implement 'refit capacity' callback slightly more correct.
hackykid
parents: 1883
diff changeset
    45
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    46
/**
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    47
 * Callback masks for vehicles, indicates which callbacks are used by a vehicle.
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    48
 * Some callbacks are always used and don't have a mask.
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    49
 */
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    50
enum VehicleCallbackMask {
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    51
	CBM_WAGON_POWER    = 0, ///< Powered wagons (trains only)
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    52
	CBM_VEHICLE_LENGTH = 1, ///< Vehicle length (trains only)
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    53
	CBM_LOAD_AMOUNT    = 2, ///< Load amount
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    54
	CBM_REFIT_CAPACITY = 3, ///< Cargo capacity after refit
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    55
	CBM_ARTIC_ENGINE   = 4, ///< Add articulated engines (trains only)
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    56
	CBM_CARGO_SUFFIX   = 5, ///< Show suffix after cargo name
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    57
	CBM_COLOUR_REMAP   = 6, ///< Change colour mapping of vehicle
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    58
	CBM_SOUND_EFFECT   = 7, ///< Vehicle uses custom sound effects
1883
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    59
};
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    60
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    61
/**
3505
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    62
 * Callback masks for stations.
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    63
 */
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    64
enum StationCallbackMask {
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    65
	CBM_STATION_AVAIL = 0, ///< Availability of station in construction window
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    66
	CBM_CUSTOM_LAYOUT = 1, ///< Use callback to select a tile layout to use
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    67
};
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    68
e9a3a6b79561 (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 3007
diff changeset
    69
/**
3007
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    70
 * Result of a failed callback.
6f65203dc324 (svn r3587) - NewGRF: Rename Callback IDs to include their "class"
peter1138
parents: 2982
diff changeset
    71
 */
1883
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    72
enum {
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    73
	CALLBACK_FAILED = 0xFFFF
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    74
};
3b02000cfbe0 (svn r2389) - Feature: [newgrf] Implement the mechanism for handling newgrf callbacks.
hackykid
parents: 1802
diff changeset
    75
2982
286f69caaf05 (svn r3557) - NewGRF: move callback enums to a new file as more than just engines will use them
peter1138
parents: 2971
diff changeset
    76
#endif /* NEWGRF_CALLBACKS_H */