# HG changeset patch # User peter1138 # Date 2006-03-31 10:14:25 # Node ID 04cda83c427832147640f612fbd56304f6438db9 # Parent 76e0683ee617a800f1482a9547fc939d66b9627c (svn r4198) - NewGRF: Rename GetCallBackResult() to GetVehicleCallback(), as other types will exist later, and use separate parameters instead of bitshifting. diff --git a/newgrf_engine.c b/newgrf_engine.c --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -476,18 +476,19 @@ bool UsesWagonOverride(const Vehicle* v) } /** - * Evaluates a newgrf callback - * @param callback_info info about which callback to evaluate - * (bit 0-7) = CallBack id of the callback to use, see CallBackId enum - * (bit 8-15) = Other info some callbacks need to have, callback specific, see CallBackId enum, not used yet - * @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) + * Evaluate a newgrf callback for vehicles + * @param callback The callback to evalute + * @param param1 First parameter of the callback + * @param param2 Second parameter of the callback + * @param engine Engine type of the vehicle to evaluate the callback for + * @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 */ -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; CargoID cargo = GC_DEFAULT; + uint16 callback_info = callback | (param1 << 8); // XXX Temporary conversion between new and old format. if (v != NULL) cargo = _global_cargo_id[_opt.landscape][v->cargo_type]; diff --git a/newgrf_engine.h b/newgrf_engine.h --- a/newgrf_engine.h +++ b/newgrf_engine.h @@ -18,7 +18,7 @@ void SetWagonOverrideSprites(EngineID en void SetCustomEngineSprites(EngineID engine, byte cargo, struct SpriteGroup *group); // loaded is in percents, overriding_engine 0xffff is none 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); #define GetCustomVehicleSprite(v, direction) GetCustomEngineSprite(v->engine_type, v, direction) #define GetCustomVehicleIcon(et, direction) GetCustomEngineSprite(et, NULL, direction) diff --git a/train_cmd.c b/train_cmd.c --- a/train_cmd.c +++ b/train_cmd.c @@ -164,7 +164,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_TRAIN_WAGON_POWER, u->engine_type, u); + uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u); if (callback != CALLBACK_FAILED) u->u.rail.cached_vis_effect = callback; @@ -191,7 +191,7 @@ void TrainConsistChanged(Vehicle* v) // check the vehicle length (callback) veh_len = CALLBACK_FAILED; 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) 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 @@ -485,7 +485,7 @@ static uint CountArticulatedParts(const if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return 0; 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; } @@ -505,7 +505,7 @@ static void AddArticulatedParts(const Ra if (!HASBIT(rvi->callbackmask, CBM_ARTIC_ENGINE)) return; 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; u->next = vl[i]; @@ -1737,7 +1737,7 @@ int32 CmdRefitRailVehicle(int x, int y, /* Check the 'refit capacity' callback */ CargoID temp_cid = v->cargo_type; 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; }