diff options
Diffstat (limited to 'src/newgrf_callbacks.h')
-rw-r--r-- | src/newgrf_callbacks.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/src/newgrf_callbacks.h b/src/newgrf_callbacks.h new file mode 100644 index 000000000..9d0a7a3da --- /dev/null +++ b/src/newgrf_callbacks.h @@ -0,0 +1,89 @@ +/* $Id$ */ + +#ifndef NEWGRF_CALLBACKS_H +#define NEWGRF_CALLBACKS_H + +/** @file newgrf_callbacks.h + */ + +/** + * List of implemented NewGRF callbacks. + * Names are formatted as CBID_<CLASS>_<CALLBACK> + */ +enum CallbackID { + // Powered wagons, if the result is lower as 0x40 then the wagon is powered + // TODO: interpret the rest of the result, aka "visual effects" + CBID_TRAIN_WAGON_POWER = 0x10, + + // Vehicle length, returns the amount of 1/8's the vehicle is shorter + // only for train vehicles + CBID_TRAIN_VEHICLE_LENGTH = 0x11, + + /* Called to determine the amount of cargo to load per unit of time when + * using gradual loading. */ + CBID_VEHICLE_LOAD_AMOUNT = 0x12, + + /* Called (if appropriate bit in callback mask is set) to determine if a + * newstation should be made available to build */ + CBID_STATION_AVAILABILITY = 0x13, + + /* Called (if appropriate bit in callback mask is set) when drawing a tile + * to choose a sprite layout to draw, instead of the standard 0-7 range */ + CBID_STATION_SPRITE_LAYOUT = 0x14, + + // Refit capacity, the passed vehicle needs to have its ->cargo_type set to + // the cargo we are refitting to, returns the new cargo capacity + CBID_VEHICLE_REFIT_CAPACITY = 0x15, + + CBID_TRAIN_ARTIC_ENGINE = 0x16, + + CBID_VEHICLE_CARGO_SUFFIX = 0x19, + + CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D, + + /* This callback is called from vehicle purchase lists. It returns a value to be + * used as a custom string ID in the 0xD000 range. */ + CBID_VEHICLE_ADDITIONAL_TEXT = 0x23, + + /* Called when building a station to customize the tile layout */ + CBID_STATION_TILE_LAYOUT = 0x24, + + /* Called when the player (or AI) tries to start or stop a vehicle. Mainly + * used for preventing a vehicle from leaving the depot. */ + CBID_VEHICLE_START_STOP_CHECK = 0x31, + + /* Called to play a special sound effect */ + CBID_VEHICLE_SOUND_EFFECT = 0x33, +}; + +/** + * Callback masks for vehicles, indicates which callbacks are used by a vehicle. + * Some callbacks are always used and don't have a mask. + */ +enum VehicleCallbackMask { + CBM_WAGON_POWER = 0, ///< Powered wagons (trains only) + CBM_VEHICLE_LENGTH = 1, ///< Vehicle length (trains only) + CBM_LOAD_AMOUNT = 2, ///< Load amount + CBM_REFIT_CAPACITY = 3, ///< Cargo capacity after refit + CBM_ARTIC_ENGINE = 4, ///< Add articulated engines (trains only) + CBM_CARGO_SUFFIX = 5, ///< Show suffix after cargo name + CBM_COLOUR_REMAP = 6, ///< Change colour mapping of vehicle + CBM_SOUND_EFFECT = 7, ///< Vehicle uses custom sound effects +}; + +/** + * Callback masks for stations. + */ +enum StationCallbackMask { + CBM_STATION_AVAIL = 0, ///< Availability of station in construction window + CBM_CUSTOM_LAYOUT = 1, ///< Use callback to select a tile layout to use +}; + +/** + * Result of a failed callback. + */ +enum { + CALLBACK_FAILED = 0xFFFF +}; + +#endif /* NEWGRF_CALLBACKS_H */ |