mirror of https://github.com/OpenTTD/OpenTTD
(svn r3587) - NewGRF: Rename Callback IDs to include their "class"
parent
67573ed605
commit
1097ec2b62
|
@ -6,33 +6,44 @@
|
||||||
/** @file newgrf_callbacks.h
|
/** @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_<CLASS>_<CALLBACK>
|
||||||
|
*/
|
||||||
enum CallbackID {
|
enum CallbackID {
|
||||||
// Powered wagons, if the result is lower as 0x40 then the wagon is powered
|
// Powered wagons, if the result is lower as 0x40 then the wagon is powered
|
||||||
// TODO: interpret the rest of the result, aka "visual effects"
|
// 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
|
// Vehicle length, returns the amount of 1/8's the vehicle is shorter
|
||||||
// only for train vehicles
|
// 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
|
// Refit capacity, the passed vehicle needs to have its ->cargo_type set to
|
||||||
// the cargo we are refitting to, returns the new cargo capacity
|
// 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)
|
* Callback masks for vehicles, indicates which callbacks are used by a vehicle.
|
||||||
enum CallbackMask {
|
* Some callbacks are always used and don't have a mask.
|
||||||
CBM_WAGON_POWER = 0,
|
*/
|
||||||
CBM_VEH_LENGTH = 1,
|
enum VehicleCallbackMask {
|
||||||
CBM_REFIT_CAP = 3,
|
CBM_WAGON_POWER = 0, ///< Powered wagons (trains only)
|
||||||
CBM_ARTIC_ENGINE = 4,
|
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 {
|
enum {
|
||||||
CALLBACK_FAILED = 0xFFFF
|
CALLBACK_FAILED = 0xFFFF
|
||||||
};
|
};
|
||||||
|
|
14
train_cmd.c
14
train_cmd.c
|
@ -122,7 +122,7 @@ void TrainConsistChanged(Vehicle* v)
|
||||||
CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON);
|
CLRBIT(u->u.rail.flags, VRF_POWEREDWAGON);
|
||||||
if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) {
|
if ((rvi_v->pow_wag_power != 0) && (rvi_u->flags & RVI_WAGON) && UsesWagonOverride(u)) {
|
||||||
if (HASBIT(rvi_u->callbackmask, CBM_WAGON_POWER)) {
|
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)
|
if (callback != CALLBACK_FAILED)
|
||||||
u->u.rail.cached_vis_effect = callback;
|
u->u.rail.cached_vis_effect = callback;
|
||||||
|
@ -143,8 +143,8 @@ void TrainConsistChanged(Vehicle* v)
|
||||||
|
|
||||||
// check the vehicle length (callback)
|
// check the vehicle length (callback)
|
||||||
veh_len = CALLBACK_FAILED;
|
veh_len = CALLBACK_FAILED;
|
||||||
if (HASBIT(rvi_u->callbackmask, CBM_VEH_LENGTH))
|
if (HASBIT(rvi_u->callbackmask, CBM_VEHICLE_LENGTH))
|
||||||
veh_len = GetCallBackResult(CBID_VEH_LENGTH, u->engine_type, u);
|
veh_len = GetCallBackResult(CBID_TRAIN_VEHICLE_LENGTH, u->engine_type, u);
|
||||||
if (veh_len == CALLBACK_FAILED)
|
if (veh_len == CALLBACK_FAILED)
|
||||||
veh_len = rvi_u->shorten_factor;
|
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
|
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 RailVehicleInfo *rvi, EngineID engine_ty
|
||||||
if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0;
|
if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0;
|
||||||
|
|
||||||
for (i = 1; i < 10; i++) {
|
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;
|
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,7 +456,7 @@ static void AddArticulatedParts(const RailVehicleInfo *rvi, Vehicle **vl)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (i = 1; i < 10; i++) {
|
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)
|
if (callback == CALLBACK_FAILED || callback == 0xFF)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1692,11 +1692,11 @@ int32 CmdRefitRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
|
const RailVehicleInfo *rvi = RailVehInfo(v->engine_type);
|
||||||
uint16 amount = CALLBACK_FAILED;
|
uint16 amount = CALLBACK_FAILED;
|
||||||
|
|
||||||
if (HASBIT(rvi->callbackmask, CBM_REFIT_CAP)) {
|
if (HASBIT(rvi->callbackmask, CBM_REFIT_CAPACITY)) {
|
||||||
/* Check the 'refit capacity' callback */
|
/* Check the 'refit capacity' callback */
|
||||||
CargoID temp_cid = v->cargo_type;
|
CargoID temp_cid = v->cargo_type;
|
||||||
v->cargo_type = new_cid;
|
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;
|
v->cargo_type = temp_cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue