diff --git a/newgrf_callbacks.h b/newgrf_callbacks.h --- a/newgrf_callbacks.h +++ b/newgrf_callbacks.h @@ -6,33 +6,44 @@ /** @file newgrf_callbacks.h */ -// This enum lists the implemented callbacks -// Use as argument for the GetCallBackResult function (see comments there) +/** + * List of implemented NewGRF callbacks. + * Names are formatted as CBID__ + */ 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_WAGON_POWER = 0x10, + CBID_TRAIN_WAGON_POWER = 0x10, // Vehicle length, returns the amount of 1/8's the vehicle is shorter // only for train vehicles - CBID_VEH_LENGTH = 0x11, + CBID_TRAIN_VEHICLE_LENGTH = 0x11, // 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_REFIT_CAP = 0x15, + CBID_VEHICLE_REFIT_CAPACITY = 0x15, - CBID_ARTIC_ENGINE = 0x16, + CBID_TRAIN_ARTIC_ENGINE = 0x16, }; -// bit positions for rvi->callbackmask, indicates which callbacks are used by an engine -// (some callbacks are always used, and dont appear here) -enum CallbackMask { - CBM_WAGON_POWER = 0, - CBM_VEH_LENGTH = 1, - CBM_REFIT_CAP = 3, - CBM_ARTIC_ENGINE = 4, +/** + * 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 }; +/** + * Result of a failed callback. + */ enum { CALLBACK_FAILED = 0xFFFF }; diff --git a/train_cmd.c b/train_cmd.c --- a/train_cmd.c +++ b/train_cmd.c @@ -122,7 +122,7 @@ void TrainConsistChanged(Vehicle* v) CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON); if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) { if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) { - uint16 callback = GetCallBackResult(CBID_WAGON_POWER, u->engine_type, u); + uint16 callback = GetCallBackResult(CBID_TRAIN_WAGON_POWER, u->engine_type, u); if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback; @@ -143,8 +143,8 @@ void TrainConsistChanged(Vehicle* v) // check the vehicle length (callback) veh_len = CALLBACK_FAILED; - if (HASBIT(rvi_u->callbackmask, CBM_VEH_LENGTH)) - veh_len = GetCallBackResult(CBID_VEH_LENGTH, u->engine_type, u); + if (HASBIT(rvi_u->callbackmask, CBM_VEHICLE_LENGTH)) + veh_len = GetCallBackResult(CBID_TRAIN_VEHICLE_LENGTH, u->engine_type, u); if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor; veh_len = clamp(veh_len, 0, u->next == NULL ? 7 : 5); // the clamp on vehicles not the last in chain is stricter, as too short wagons can break the 'follow next vehicle' code @@ -435,7 +435,7 @@ static uint CountArticulatedParts(const if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0; for (i = 1; i < 10; i++) { - callback = GetCallBackResult(CBID_ARTIC_ENGINE + (i << 8), engine_type, NULL); + callback = GetCallBackResult(CBID_TRAIN_ARTIC_ENGINE + (i << 8), engine_type, NULL); if (callback == CALLBACK_FAILED || callback == 0xFF) break; } @@ -456,7 +456,7 @@ static void AddArticulatedParts(const Ra return; for (i = 1; i < 10; i++) { - callback = GetCallBackResult(CBID_ARTIC_ENGINE + (i << 8), v->engine_type, NULL); + callback = GetCallBackResult(CBID_TRAIN_ARTIC_ENGINE + (i << 8), v->engine_type, NULL); if (callback == CALLBACK_FAILED || callback == 0xFF) return; @@ -1692,11 +1692,11 @@ int32 CmdRefitRailVehicle(int x, int y, const RailVehicleInfo *rvi = RailVehInfo(v->engine_type); uint16 amount = CALLBACK_FAILED; - if (HASBIT(rvi->callbackmask, CBM_REFIT_CAP)) { + if (HASBIT(rvi->callbackmask, CBM_REFIT_CAPACITY)) { /* Check the 'refit capacity' callback */ CargoID temp_cid = v->cargo_type; v->cargo_type = new_cid; - amount = GetCallBackResult(CBID_REFIT_CAP, v->engine_type, v); + amount = GetCallBackResult(CBID_VEHICLE_REFIT_CAPACITY, v->engine_type, v); v->cargo_type = temp_cid; }