mirror of https://github.com/OpenTTD/OpenTTD
(svn r4198) - NewGRF: Rename GetCallBackResult() to GetVehicleCallback(), as other types will exist later, and use separate parameters instead of bitshifting.
parent
3b4b577107
commit
a6e1a1d372
|
@ -476,18 +476,19 @@ bool UsesWagonOverride(const Vehicle* v)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Evaluates a newgrf callback
|
* Evaluate a newgrf callback for vehicles
|
||||||
* @param callback_info info about which callback to evaluate
|
* @param callback The callback to evalute
|
||||||
* (bit 0-7) = CallBack id of the callback to use, see CallBackId enum
|
* @param param1 First parameter of the callback
|
||||||
* (bit 8-15) = Other info some callbacks need to have, callback specific, see CallBackId enum, not used yet
|
* @param param2 Second parameter of the callback
|
||||||
* @param engine Engine type of the vehicle to evaluate the callback for
|
* @param engine Engine type of the vehicle to evaluate the callback for
|
||||||
* @param vehicle The vehicle to evaluate the callback for, NULL if it doesnt exist (yet)
|
* @param vehicle The vehicle to evaluate the callback for, or NULL if it doesnt exist yet
|
||||||
* @return The value the callback returned, or CALLBACK_FAILED if it failed
|
* @return The value the callback returned, or CALLBACK_FAILED if it failed
|
||||||
*/
|
*/
|
||||||
uint16 GetCallBackResult(uint16 callback_info, EngineID engine, const Vehicle *v)
|
uint16 GetVehicleCallback(byte callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v)
|
||||||
{
|
{
|
||||||
const SpriteGroup *group;
|
const SpriteGroup *group;
|
||||||
CargoID cargo = GC_DEFAULT;
|
CargoID cargo = GC_DEFAULT;
|
||||||
|
uint16 callback_info = callback | (param1 << 8); // XXX Temporary conversion between new and old format.
|
||||||
|
|
||||||
if (v != NULL)
|
if (v != NULL)
|
||||||
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
|
cargo = _global_cargo_id[_opt.landscape][v->cargo_type];
|
||||||
|
|
|
@ -18,7 +18,7 @@ void SetWagonOverrideSprites(EngineID engine, struct SpriteGroup *group, byte *t
|
||||||
void SetCustomEngineSprites(EngineID engine, byte cargo, struct SpriteGroup *group);
|
void SetCustomEngineSprites(EngineID engine, byte cargo, struct SpriteGroup *group);
|
||||||
// loaded is in percents, overriding_engine 0xffff is none
|
// loaded is in percents, overriding_engine 0xffff is none
|
||||||
int GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction);
|
int GetCustomEngineSprite(EngineID engine, const Vehicle* v, Direction direction);
|
||||||
uint16 GetCallBackResult(uint16 callback_info, EngineID engine, const Vehicle *v);
|
uint16 GetVehicleCallback(byte callback, uint32 param1, uint32 param2, EngineID engine, const Vehicle *v);
|
||||||
bool UsesWagonOverride(const Vehicle *v);
|
bool UsesWagonOverride(const Vehicle *v);
|
||||||
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
|
#define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction)
|
||||||
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
|
#define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction)
|
||||||
|
|
10
train_cmd.c
10
train_cmd.c
|
@ -164,7 +164,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_TRAIN_WAGON_POWER, u->engine_type, u);
|
uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, 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;
|
||||||
|
@ -191,7 +191,7 @@ 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_VEHICLE_LENGTH))
|
if (HASBIT(rvi_u->callbackmask, CBM_VEHICLE_LENGTH))
|
||||||
veh_len = GetCallBackResult(CBID_TRAIN_VEHICLE_LENGTH, u->engine_type, u);
|
veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, 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
|
||||||
|
@ -485,7 +485,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_TRAIN_ARTIC_ENGINE + (i << 8), engine_type, NULL);
|
callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL);
|
||||||
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
|
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -505,7 +505,7 @@ static void AddArticulatedParts(const RailVehicleInfo *rvi, Vehicle **vl)
|
||||||
if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return;
|
if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return;
|
||||||
|
|
||||||
for (i = 1; i < 10; i++) {
|
for (i = 1; i < 10; i++) {
|
||||||
callback = GetCallBackResult(CBID_TRAIN_ARTIC_ENGINE + (i << 8), v->engine_type, NULL);
|
callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, NULL);
|
||||||
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
|
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
|
||||||
|
|
||||||
u->next = vl[i];
|
u->next = vl[i];
|
||||||
|
@ -1737,7 +1737,7 @@ int32 CmdRefitRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
||||||
/* 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_VEHICLE_REFIT_CAPACITY, v->engine_type, v);
|
amount = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
|
||||||
v->cargo_type = temp_cid;
|
v->cargo_type = temp_cid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue