From b876be00646fabe692fbfd2f40b2e4e738fa8627 Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 9 Jul 2007 19:38:12 +0000 Subject: [PATCH] (svn r10493) -Codechange: update some callback ID enums to reflect their changed usage, add a few and update the comments. --- src/articulated_vehicles.cpp | 4 +- src/newgrf_callbacks.h | 223 ++++++++++++++++++----------------- src/roadveh_cmd.cpp | 2 +- src/town_cmd.cpp | 2 +- src/train_cmd.cpp | 2 +- 5 files changed, 121 insertions(+), 112 deletions(-) diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index e50a458ff6..9ae398f4d3 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -21,7 +21,7 @@ uint CountArticulatedParts(EngineID engine_type) uint i; for (i = 1; i < 10; i++) { - uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, engine_type, NULL); + uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, NULL); if (callback == CALLBACK_FAILED || callback == 0xFF) break; } @@ -36,7 +36,7 @@ void AddArticulatedParts(Vehicle **vl, VehicleType type) if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return; for (uint i = 1; i < 10; i++) { - uint16 callback = GetVehicleCallback(CBID_TRAIN_ARTIC_ENGINE, i, 0, v->engine_type, v); + uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v); if (callback == CALLBACK_FAILED || callback == 0xFF) return; /* Attempt to use pre-allocated vehicles until they run out. This can happen diff --git a/src/newgrf_callbacks.h b/src/newgrf_callbacks.h index 25e5fb80da..278936da15 100644 --- a/src/newgrf_callbacks.h +++ b/src/newgrf_callbacks.h @@ -9,164 +9,173 @@ /** * List of implemented NewGRF callbacks. + * Most of these callbacks are only triggered when the corresponding + * bit is set in the callback flags/trigger for a vehicle, house, + * industry, etc. * Names are formatted as CBID__ */ enum CallbackID { - /* Set when calling a randomizing trigger (almost undocumented) */ - CBID_RANDOM_TRIGGER = 0x01, + /** Set when calling a randomizing trigger (almost undocumented). */ + CBID_RANDOM_TRIGGER = 0x01, - /* 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, + /** 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, + /** Vehicle length, returns the amount of 1/8's the vehicle is shorter for trains and RVs. */ + CBID_VEHICLE_LENGTH = 0x11, - /* Called (if appropriate bit in callback mask is set) to determine the - * amount of cargo to load per unit of time when using gradual loading. */ - CBID_VEHICLE_LOAD_AMOUNT = 0x12, + /** 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, + /** Determine whether 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, + /** 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, + /** 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, + /** Builds articulated engines for trains and RVs. */ + CBID_VEHICLE_ARTIC_ENGINE = 0x16, - /* Called (if appropriate bit in callback mask is set) to determine whether - * the house can be built on the specified tile. */ - CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17, + /** Determine whether the house can be built on the specified tile. */ + CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17, - CBID_VEHICLE_CARGO_SUFFIX = 0x19, + /** AI construction/purchase selection */ + CBID_GENERIC_AI_PURCHASE_SELECTION = 0x18, // not implemented - /* Called (if appropriate bit in callback mask is set) to determine - * the next animation frame. */ - CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A, + /** Determine the cargo "suffixes" for each refit possibility of a cargo. */ + CBID_VEHICLE_CARGO_SUFFIX = 0x19, - /* Called (if appropriate bit in callback mask is set) for periodically - * starting or stopping the animation. */ - CBID_HOUSE_ANIMATION_START_STOP = 0x1B, + /** Determine the next animation frame for a house. */ + CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A, - /* Called (if appropriate bit in callback mask is set) whenever the - * construction state of a house changes. */ - CBID_CONSTRUCTION_STATE_CHANGE = 0x1C, + /** Called for periodically starting or stopping the animation. */ + CBID_HOUSE_ANIMATION_START_STOP = 0x1B, - CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D, + /** Called whenever the construction state of a house changes. */ + CBID_HOUSE_CONSTRUCTION_STATE_CHANGE = 0x1C, - /* Called (if appropriate bit in callback mask is set) to determine the - * colour of a town building. */ - CBID_BUILDING_COLOUR = 0x1E, + /** Determine whether a wagon can be attached to an already existing train. */ + CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D, - /* Called (if appropriate bit in callback mask is set) to decide how much - * cargo a town building can accept. */ - CBID_HOUSE_CARGO_ACCEPTANCE = 0x1F, + /** Called to determine the colour of a town building. */ + CBID_BUILDING_COLOUR = 0x1E, - /* Called (if appropriate bit in callback mask is set) to indicate - * how long the current animation frame should last. */ - CBID_HOUSE_ANIMATION_SPEED = 0x20, + /** Called to decide how much cargo a town building can accept. */ + CBID_HOUSE_CARGO_ACCEPTANCE = 0x1F, - /* Called (if appropriate bit in callback mask is set) periodically to - * determine if a house should be destroyed. */ - CBID_HOUSE_DESTRUCTION = 0x21, + /** Called to indicate how long the current animation frame should last. */ + CBID_HOUSE_ANIMATION_SPEED = 0x20, - /* Called to determine if the given industry type is available */ - CBID_INDUSTRY_AVAILABLE = 0x22, // not yet implemented + /** Called periodically to determine if a house should be destroyed. */ + CBID_HOUSE_DESTRUCTION = 0x21, - /* This callback is called from vehicle purchase lists. It returns a value to be + /** Called to determine if the given industry type is available */ + CBID_INDUSTRY_AVAILABLE = 0x22, // not implemented + + /** 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, + CBID_VEHICLE_ADDITIONAL_TEXT = 0x23, - /* Called when building a station to customize the tile layout */ - CBID_STATION_TILE_LAYOUT = 0x24, + /** Called when building a station to customize the tile layout */ + CBID_STATION_TILE_LAYOUT = 0x24, - /* Called for periodically starting or stopping the animation. */ - CBID_INDTILE_ANIM_START_STOP = 0x25, // not yet implemented + /** Called for periodically starting or stopping the animation. */ + CBID_INDTILE_ANIM_START_STOP = 0x25, // not implemented - /* Called to determine industry tile next animation frame. */ - CBID_INDTILE_ANIM_NEXT_FRAME = 0x26, // not yet implemented + /** Called to determine industry tile next animation frame. */ + CBID_INDTILE_ANIM_NEXT_FRAME = 0x26, // not implemented - /* Called to indicate how long the current animation frame should last. */ - CBID_INDTILE_ANIMATION_SPEED = 0x27, // not yet implemented + /** Called to indicate how long the current animation frame should last. */ + CBID_INDTILE_ANIMATION_SPEED = 0x27, // not implemented - /* Called to determine if the given industry can be built on specific area */ - CBID_INDUSTRY_LOCATION = 0x28, + /** Called to determine if the given industry can be built on specific area. */ + CBID_INDUSTRY_LOCATION = 0x28, - /* Called on production changes, so it can be adjusted */ - CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // not yet implemented + /** Called on production changes, so it can be adjusted. */ + CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // not implemented - /* Called (if appropriate bit in callback mask is set) to determine which - * cargoes a town building should accept. */ - CBID_HOUSE_ACCEPT_CARGO = 0x2A, + /** Called to determine which cargoes a town building should accept. */ + CBID_HOUSE_ACCEPT_CARGO = 0x2A, - /* Called to query the cargo acceptance of the industry tile */ - CBID_INDTILE_CARGO_ACCEPTANCE = 0x2B, + /** Called to query the cargo acceptance of the industry tile */ + CBID_INDTILE_CARGO_ACCEPTANCE = 0x2B, - /* Called to determine which cargoes an industry should accept. */ - CBID_INDTILE_ACCEPT_CARGO = 0x2C, + /** Called to determine which cargoes an industry should accept. */ + CBID_INDTILE_ACCEPT_CARGO = 0x2C, - /* Called to determine if a specific colour map should be used for a vehicle - * instead of the default livery */ - CBID_VEHICLE_COLOUR_MAPPING = 0x2D, + /** Called to determine if a specific colour map should be used for a vehicle + * instead of the default livery. */ + CBID_VEHICLE_COLOUR_MAPPING = 0x2D, - /* Called (if appropriate bit in callback mask is set) to determine how much - * cargo a town building produces. */ - CBID_HOUSE_PRODUCE_CARGO = 0x2E, // not yet implemented + /** Called to determine how much cargo a town building produces. */ + CBID_HOUSE_PRODUCE_CARGO = 0x2E, - /* Called to determine if the given industry tile can be built on specific tile */ - CBID_INDTILE_SHAPE_CHECK = 0x2F, + /** Called to determine if the given industry tile can be built on specific tile. */ + CBID_INDTILE_SHAPE_CHECK = 0x2F, - /* Called to determine the type (if any) of foundation to draw for industry tile */ - CBID_INDUSTRY_DRAW_FOUNDATIONS = 0x30, + /** Called to determine the type (if any) of foundation to draw for industry tile. */ + CBID_INDUSTRY_DRAW_FOUNDATIONS = 0x30, - /* Called when the player (or AI) tries to start or stop a vehicle. Mainly + /** 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, + CBID_VEHICLE_START_STOP_CHECK = 0x31, - /* Called to play a special sound effect */ - CBID_VEHICLE_SOUND_EFFECT = 0x33, + /** Called for every vehicle every 32 days (not all on same date though). */ + CBID_VEHICLE_32DAY_CALLBACK = 0x32, // not implemented - /* Called monthly on production changes, so it can be adjusted more frequently */ - CBID_INDUSTRY_MONTHLYPROD_CHANGE= 0x35, // not yet implemented + /** Called to play a special sound effect */ + CBID_VEHICLE_SOUND_EFFECT = 0x33, - /* Called to modify various vehicle properties. Callback parameter 1 + /** Return the vehicles this given vehicle can be "upgraded" to. */ + CBID_VEHICLE_AUTOREPLACE_SELECTION = 0x34, + + /** Called monthly on production changes, so it can be adjusted more frequently */ + CBID_INDUSTRY_MONTHLYPROD_CHANGE = 0x35, // not implemented + + /** Called to modify various vehicle properties. Callback parameter 1 * specifies the property index, as used in Action 0, to change. */ - CBID_VEHICLE_MODIFY_PROPERTY = 0x36, + CBID_VEHICLE_MODIFY_PROPERTY = 0x36, - /* Called to determine text to display after cargo name */ - CBID_INDUSTRY_CARGO_SUFFIX = 0x37, // not yet implemented + /** Called to determine text to display after cargo name */ + CBID_INDUSTRY_CARGO_SUFFIX = 0x37, // not implemented - /* Called to determine more text in the fund industry window */ - CBID_INDUSTRY_FUND_MORE_TEXT = 0x38, // not yet implemented + /** Called to determine more text in the fund industry window */ + CBID_INDUSTRY_FUND_MORE_TEXT = 0x38, // not implemented - /* Called to calculate the income of delivered cargo */ - CBID_CARGO_PROFIT_CALC = 0x39, + /** Called to calculate the income of delivered cargo */ + CBID_CARGO_PROFIT_CALC = 0x39, - /* Called to determine more text in the industry window */ - CBID_INDUSTRY_WINDOW_MORE_TEXT = 0x3A, + /** Called to determine more text in the industry window */ + CBID_INDUSTRY_WINDOW_MORE_TEXT = 0x3A, - /* Called to determine industry special effects */ - CBID_INDUSTRY_SPECIAL_EFFECT = 0x3B, + /** Called to determine industry special effects */ + CBID_INDUSTRY_SPECIAL_EFFECT = 0x3B, - /* Called to determine if industry can alter the ground below industry tile */ - CBID_INDUSTRY_AUTOSLOPE = 0x3C, // not yet implemented + /** Called to determine if industry can alter the ground below industry tile */ + CBID_INDUSTRY_AUTOSLOPE = 0x3C, // not implemented - /* Called to determine if the industry can still accept or refuse more cargo arrival */ - CBID_INDUSTRY_REFUSE_CARGO = 0x3D, + /** Called to determine if the industry can still accept or refuse more cargo arrival */ + CBID_INDUSTRY_REFUSE_CARGO = 0x3D, - /* Called (if appropriate bit in callback mask set) to determine whether a - * town building can be destroyed. */ - CBID_HOUSE_DENY_DESTRUCTION = 0x143, + /** Called to determine whether a town building can be destroyed. */ + CBID_HOUSE_DENY_DESTRUCTION = 0x143, - /* Called to calculate part of a station rating */ - CBID_CARGO_STATION_RATING_CALC = 0x145, + /** Select an ambient sound to play for a given type of tile. */ + CBID_SOUNDS_AMBIENT_EFFECT = 0x144, // not implemented + + /** Called to calculate part of a station rating. */ + CBID_CARGO_STATION_RATING_CALC = 0x145, + + /** Allow signal sprites to be replaced dynamically. */ + CBID_NEW_SIGNALS_SPRITE_DRAW = 0x146, // not implemented + + /** Add an offset to the default sprite numbers to show another sprite. */ + CBID_CANALS_SPRITE_OFFSET = 0x147, // not implemented }; /** diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 5faf41e249..c7c38c04b9 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -126,7 +126,7 @@ byte GetRoadVehLength(const Vehicle *v) { byte length = 8; - uint16 veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, v->engine_type, v); + uint16 veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, v->engine_type, v); if (veh_len != CALLBACK_FAILED) { length -= clamp(veh_len, 0, 7); } diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 5de70f79ae..bff65782ba 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -345,7 +345,7 @@ static void MakeSingleHouseBigger(TileIndex tile) /* Check and/or */ if (HASBIT(GetHouseSpecs(GetHouseType(tile))->callback_mask, CBM_CONSTRUCTION_STATE_CHANGE)) { - uint16 callback_res = GetHouseCallback(CBID_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile); + uint16 callback_res = GetHouseCallback(CBID_HOUSE_CONSTRUCTION_STATE_CHANGE, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile); if (callback_res != CALLBACK_FAILED) ChangeHouseAnimationFrame(tile, callback_res); } diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index eaaf41cb31..db1250b62a 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -231,7 +231,7 @@ void TrainConsistChanged(Vehicle* v) /* check the vehicle length (callback) */ uint16 veh_len = CALLBACK_FAILED; if (HASBIT(EngInfo(u->engine_type)->callbackmask, CBM_VEHICLE_LENGTH)) { - veh_len = GetVehicleCallback(CBID_TRAIN_VEHICLE_LENGTH, 0, 0, u->engine_type, u); + veh_len = GetVehicleCallback(CBID_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