changeset 13036:8e2a0e8fa275 draft

(svn r17534) -Codechange: unify the naming of callback masks/flags
author rubidium <rubidium@openttd.org>
date Mon, 14 Sep 2009 12:22:57 +0000
parents 5c7bae21e898
children 308cd9bfb7a1
files src/aircraft_cmd.cpp src/articulated_vehicles.cpp src/cargotype.h src/economy.cpp src/engine.cpp src/engine_type.h src/house.h src/industry_cmd.cpp src/industry_gui.cpp src/industrytype.h src/newgrf.cpp src/newgrf_callbacks.h src/newgrf_canal.h src/newgrf_industries.cpp src/newgrf_industrytiles.cpp src/newgrf_sound.cpp src/newgrf_station.cpp src/newgrf_station.h src/rail_gui.cpp src/roadveh_cmd.cpp src/ship_cmd.cpp src/station_cmd.cpp src/train_cmd.cpp src/vehicle.cpp src/vehicle_gui.cpp
diffstat 25 files changed, 86 insertions(+), 79 deletions(-) [+]
line wrap: on
line diff
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -387,7 +387,7 @@
 		if (v->cargo_type != CT_PASSENGERS) {
 			uint16 callback = CALLBACK_FAILED;
 
-			if (HasBit(EngInfo(p1)->callbackmask, CBM_VEHICLE_REFIT_CAPACITY)) {
+			if (HasBit(EngInfo(p1)->callback_mask, CBM_VEHICLE_REFIT_CAPACITY)) {
 				callback = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
 			}
 
@@ -537,7 +537,7 @@
 
 	/* Check the refit capacity callback */
 	uint16 callback = CALLBACK_FAILED;
-	if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_REFIT_CAPACITY)) {
+	if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_REFIT_CAPACITY)) {
 		/* Back up the existing cargo type */
 		CargoID temp_cid = v->cargo_type;
 		byte temp_subtype = v->cargo_subtype;
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -22,7 +22,7 @@
 
 uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
 {
-	if (!HasBit(EngInfo(engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return 0;
+	if (!HasBit(EngInfo(engine_type)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return 0;
 
 	/* If we can't allocate a vehicle now, we can't allocate it in the command
 	 * either, so it doesn't matter how many articulated parts there are. */
@@ -95,7 +95,7 @@
 
 	if (type != VEH_TRAIN && type != VEH_ROAD) return capacity;
 
-	if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
+	if (!HasBit(EngInfo(engine)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity;
 
 	for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) {
 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
@@ -122,7 +122,7 @@
 	const Engine *e = Engine::Get(engine);
 	if (e->type != VEH_TRAIN && e->type != VEH_ROAD) return false;
 
-	if (!HasBit(e->info.callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return false;
+	if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return false;
 
 	for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) {
 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
@@ -148,7 +148,7 @@
 
 	if (type != VEH_TRAIN && type != VEH_ROAD) return cargos;
 
-	if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return cargos;
+	if (!HasBit(EngInfo(engine)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return cargos;
 
 	for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) {
 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
@@ -177,7 +177,7 @@
 
 	if (type != VEH_TRAIN && type != VEH_ROAD) return cargos;
 
-	if (!HasBit(EngInfo(engine)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return cargos;
+	if (!HasBit(EngInfo(engine)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return cargos;
 
 	for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) {
 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine, NULL);
@@ -291,7 +291,7 @@
 
 void AddArticulatedParts(Vehicle *first, VehicleType type)
 {
-	if (!HasBit(EngInfo(first->engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) return;
+	if (!HasBit(EngInfo(first->engine_type)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return;
 
 	Vehicle *v = first;
 	for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) {
--- a/src/cargotype.h
+++ b/src/cargotype.h
@@ -44,7 +44,7 @@
 	bool is_freight;
 	TownEffect town_effect; ///< The effect this cargo type has on towns
 	uint16 multipliertowngrowth;
-	uint8 callback_mask;
+	uint8 callback_mask;         ///< Bitmask of cargo callbacks that have to be called
 
 	StringID name;
 	StringID name_single;
--- a/src/economy.cpp
+++ b/src/economy.cpp
@@ -883,7 +883,7 @@
 		if (cargo_index >= lengthof(ind->accepts_cargo)) continue;
 
 		/* Check if industry temporarily refuses acceptance */
-		if (HasBit(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) {
+		if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
 			uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO, 0, GetReverseCargoTranslation(cargo_type, indspec->grf_prop.grffile), ind, ind->type, ind->xy);
 			if (res == 0) continue;
 		}
@@ -957,7 +957,7 @@
 static void TriggerIndustryProduction(Industry *i)
 {
 	const IndustrySpec *indspec = GetIndustrySpec(i->type);
-	uint16 callback = indspec->callback_flags;
+	uint16 callback = indspec->callback_mask;
 
 	i->was_cargo_delivered = true;
 	i->last_cargo_accepted_at = _date;
@@ -1144,7 +1144,7 @@
 		/* The default loadamount for mail is 1/4 of the load amount for passengers */
 		if (v->type == VEH_AIRCRAFT && !Aircraft::From(v)->IsNormalAircraft()) load_amount = (load_amount + 3) / 4;
 
-		if (_settings_game.order.gradual_loading && HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_LOAD_AMOUNT)) {
+		if (_settings_game.order.gradual_loading && HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_LOAD_AMOUNT)) {
 			uint16 cb_load_amount = GetVehicleCallback(CBID_VEHICLE_LOAD_AMOUNT, 0, 0, v->engine_type, v);
 			if (cb_load_amount != CALLBACK_FAILED && GB(cb_load_amount, 0, 8) != 0) load_amount = GB(cb_load_amount, 0, 8);
 		}
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -793,7 +793,7 @@
 
 	/* Are there suffixes?
 	 * Note: This does not mean the suffixes are actually available for every consist at any time. */
-	if (HasBit(ei->callbackmask, CBM_VEHICLE_CARGO_SUFFIX)) return true;
+	if (HasBit(ei->callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) return true;
 
 	/* Is there any cargo except the default cargo? */
 	CargoID default_cargo = e->GetDefaultCargoType();
--- a/src/engine_type.h
+++ b/src/engine_type.h
@@ -119,7 +119,7 @@
 	uint32 refit_mask;
 	byte refit_cost;
 	byte misc_flags;
-	byte callbackmask;
+	byte callback_mask; ///< Bitmask of vehicle callbacks that have to be called
 	int8 retire_early;  ///< Number of years early to retire vehicle
 	StringID string_id; ///< Default name of engine
 };
--- a/src/house.h
+++ b/src/house.h
@@ -109,7 +109,7 @@
 	HouseID substitute_id;             ///< which original house this one is based on
 	struct SpriteGroup *spritegroup;   ///< pointer to the different sprites of the house
 	HouseID override;                  ///< which house this one replaces
-	uint16 callback_mask;              ///< House callback flags
+	uint16 callback_mask;              ///< Bitmask of house callbacks that have to be called
 	byte random_colour[4];             ///< 4 "random" colours
 	byte probability;                  ///< Relative probability of appearing (16 is the standard value)
 	HouseExtraFlags extra_flags;       ///< some more flags
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -392,7 +392,7 @@
 	 */
 	if (gfx >= NEW_INDUSTRYTILEOFFSET) {
 		const IndustryTileSpec *indts = GetIndustryTileSpec(gfx);
-		if (indts->grf_prop.spritegroup != NULL && HasBit(indts->callback_flags, CBM_INDT_DRAW_FOUNDATIONS)) {
+		if (indts->grf_prop.spritegroup != NULL && HasBit(indts->callback_mask, CBM_INDT_DRAW_FOUNDATIONS)) {
 			uint32 callback_res = GetIndustryTileCallback(CBID_INDUSTRY_DRAW_FOUNDATIONS, 0, 0, gfx, Industry::GetByTile(tile), tile);
 			if (callback_res == 0) return FOUNDATION_NONE;
 		}
@@ -413,7 +413,7 @@
 	const CargoID *accepts_cargo = itspec->accepts_cargo;
 	const uint8 *cargo_acceptance = itspec->acceptance;
 
-	if (HasBit(itspec->callback_flags, CBM_INDT_ACCEPT_CARGO)) {
+	if (HasBit(itspec->callback_mask, CBM_INDT_ACCEPT_CARGO)) {
 		uint16 res = GetIndustryTileCallback(CBID_INDTILE_ACCEPT_CARGO, 0, 0, gfx, Industry::GetByTile(tile), tile);
 		if (res != CALLBACK_FAILED) {
 			accepts_cargo = raw_accepts_cargo;
@@ -421,7 +421,7 @@
 		}
 	}
 
-	if (HasBit(itspec->callback_flags, CBM_INDT_CARGO_ACCEPTANCE)) {
+	if (HasBit(itspec->callback_mask, CBM_INDT_CARGO_ACCEPTANCE)) {
 		uint16 res = GetIndustryTileCallback(CBID_INDTILE_CARGO_ACCEPTANCE, 0, 0, gfx, Industry::GetByTile(tile), tile);
 		if (res != CALLBACK_FAILED) {
 			cargo_acceptance = raw_cargo_acceptance;
@@ -1083,7 +1083,7 @@
 
 	/* produce some cargo */
 	if ((i->counter & 0xFF) == 0) {
-		if (HasBit(indsp->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) IndustryProductionCallback(i, 1);
+		if (HasBit(indsp->callback_mask, CBM_IND_PRODUCTION_256_TICKS)) IndustryProductionCallback(i, 1);
 
 		IndustryBehaviour indbehav = indsp->behaviour;
 		i->produced_cargo_waiting[0] = min(0xffff, i->produced_cargo_waiting[0] + i->production_rate[0]);
@@ -1091,7 +1091,7 @@
 
 		if ((indbehav & INDUSTRYBEH_PLANT_FIELDS) != 0) {
 			bool plant;
-			if (HasBit(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+			if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
 				plant = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, Random(), 0, i, i->type, i->xy) != 0);
 			} else {
 				plant = Chance16(1, 8);
@@ -1101,7 +1101,7 @@
 		}
 		if ((indbehav & INDUSTRYBEH_CUT_TREES) != 0) {
 			bool cut = ((i->counter & 0x1FF) == 0);
-			if (HasBit(indsp->callback_flags, CBM_IND_SPECIAL_EFFECT)) {
+			if (HasBit(indsp->callback_mask, CBM_IND_SPECIAL_EFFECT)) {
 				cut = (GetIndustryCallback(CBID_INDUSTRY_SPECIAL_EFFECT, 0, 1, i, i->type, i->xy) != 0);
 			}
 
@@ -1300,7 +1300,7 @@
 			/* Perform land/water check if not disabled */
 			if (!HasBit(its->slopes_refused, 5) && (IsWaterTile(cur_tile) == !(ind_behav & INDUSTRYBEH_BUILT_ONWATER))) return false;
 
-			if (HasBit(its->callback_flags, CBM_INDT_SHAPE_CHECK)) {
+			if (HasBit(its->callback_mask, CBM_INDT_SHAPE_CHECK)) {
 				custom_shape = true;
 				if (!PerformIndustryTileSlopeCheck(tile, cur_tile, its, type, gfx, itspec_index)) return false;
 			} else {
@@ -1530,8 +1530,8 @@
 
 	/* don't use smooth economy for industries using production related callbacks */
 	if (_settings_game.economy.smooth_economy &&
-	    !(HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
-	    !(HasBit(indspec->callback_flags, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CHANGE))             // production change callbacks
+	    !(HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
+	    !(HasBit(indspec->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CHANGE))             // production change callbacks
 	) {
 		i->production_rate[0] = min((RandomRange(256) + 128) * i->production_rate[0] >> 8 , 255);
 		i->production_rate[1] = min((RandomRange(256) + 128) * i->production_rate[1] >> 8 , 255);
@@ -1563,12 +1563,12 @@
 	i->last_month_production[1] = i->production_rate[1] * 8;
 	i->founder = founder;
 
-	if (HasBit(indspec->callback_flags, CBM_IND_DECIDE_COLOUR)) {
+	if (HasBit(indspec->callback_mask, CBM_IND_DECIDE_COLOUR)) {
 		uint16 res = GetIndustryCallback(CBID_INDUSTRY_DECIDE_COLOUR, 0, 0, i, type, INVALID_TILE);
 		if (res != CALLBACK_FAILED) i->random_colour = GB(res, 0, 4);
 	}
 
-	if (HasBit(indspec->callback_flags, CBM_IND_INPUT_CARGO_TYPES)) {
+	if (HasBit(indspec->callback_mask, CBM_IND_INPUT_CARGO_TYPES)) {
 		for (j = 0; j < lengthof(i->accepts_cargo); j++) i->accepts_cargo[j] = CT_INVALID;
 		for (j = 0; j < lengthof(i->accepts_cargo); j++) {
 			uint16 res = GetIndustryCallback(CBID_INDUSTRY_INPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE);
@@ -1577,7 +1577,7 @@
 		}
 	}
 
-	if (HasBit(indspec->callback_flags, CBM_IND_OUTPUT_CARGO_TYPES)) {
+	if (HasBit(indspec->callback_mask, CBM_IND_OUTPUT_CARGO_TYPES)) {
 		for (j = 0; j < lengthof(i->produced_cargo); j++) i->produced_cargo[j] = CT_INVALID;
 		for (j = 0; j < lengthof(i->produced_cargo); j++) {
 			uint16 res = GetIndustryCallback(CBID_INDUSTRY_OUTPUT_CARGO_TYPES, j, 0, i, type, INVALID_TILE);
@@ -1656,7 +1656,7 @@
 
 	if (!CheckIfIndustryTilesAreFree(tile, it, itspec_index, type, &custom_shape_check)) return NULL;
 
-	if (HasBit(GetIndustrySpec(type)->callback_flags, CBM_IND_LOCATION)) {
+	if (HasBit(GetIndustrySpec(type)->callback_mask, CBM_IND_LOCATION)) {
 		if (!CheckIfCallBackAllowsCreation(tile, type, itspec_index, seed)) return NULL;
 	} else {
 		if (!_check_new_industry_procs[indspec->check_proc](tile)) return NULL;
@@ -2000,7 +2000,7 @@
 	for (byte j = 0; j < lengthof(ind->accepts_cargo); j++) {
 		if (ind->accepts_cargo[j] == CT_INVALID) continue;
 		if (cargo == ind->accepts_cargo[j]) {
-			if (HasBit(indspec->callback_flags, CBM_IND_REFUSE_CARGO)) {
+			if (HasBit(indspec->callback_mask, CBM_IND_REFUSE_CARGO)) {
 				uint16 res = GetIndustryCallback(CBID_INDUSTRY_REFUSE_CARGO,
 						0, GetReverseCargoTranslation(cargo, indspec->grf_prop.grffile),
 						ind, ind->type, ind->xy);
@@ -2132,13 +2132,13 @@
 	bool recalculate_multipliers = false; ///< reinitialize production_rate to match prod_level
 	/* don't use smooth economy for industries using production related callbacks */
 	bool smooth_economy = _settings_game.economy.smooth_economy &&
-	                      !(HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
-	                      !(HasBit(indspec->callback_flags, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_flags, CBM_IND_PRODUCTION_CHANGE));            // production change callbacks
+	                      !(HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_256_TICKS) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL)) && // production callbacks
+	                      !(HasBit(indspec->callback_mask, CBM_IND_MONTHLYPROD_CHANGE) || HasBit(indspec->callback_mask, CBM_IND_PRODUCTION_CHANGE));            // production change callbacks
 	byte div = 0;
 	byte mul = 0;
 	int8 increment = 0;
 
-	bool callback_enabled = HasBit(indspec->callback_flags, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE);
+	bool callback_enabled = HasBit(indspec->callback_mask, monthly ? CBM_IND_MONTHLYPROD_CHANGE : CBM_IND_PRODUCTION_CHANGE);
 	if (callback_enabled) {
 		uint16 res = GetIndustryCallback(monthly ? CBID_INDUSTRY_MONTHLYPROD_CHANGE : CBID_INDUSTRY_PRODUCTION_CHANGE, 0, Random(), i, i->type, i->xy);
 		if (res != CALLBACK_FAILED) { // failed callback means "do nothing"
@@ -2427,7 +2427,7 @@
 			const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
 
 			/* Call callback 3C 'disable autosloping for industry tiles'. */
-			if (HasBit(itspec->callback_flags, CBM_INDT_AUTOSLOPE)) {
+			if (HasBit(itspec->callback_mask, CBM_INDT_AUTOSLOPE)) {
 				/* If the callback fails, allow autoslope. */
 				uint16 res = GetIndustryTileCallback(CBID_INDUSTRY_AUTOSLOPE, 0, 0, gfx, Industry::GetByTile(tile), tile);
 				if ((res == 0) || (res == CALLBACK_FAILED)) return CommandCost(EXPENSES_CONSTRUCTION, _price.terraform);
--- a/src/industry_gui.cpp
+++ b/src/industry_gui.cpp
@@ -62,7 +62,7 @@
  */
 static StringID GetCargoSuffix(uint cargo, CargoSuffixType cst, Industry *ind, IndustryType ind_type, const IndustrySpec *indspec)
 {
-	if (HasBit(indspec->callback_flags, CBM_IND_CARGO_SUFFIX)) {
+	if (HasBit(indspec->callback_mask, CBM_IND_CARGO_SUFFIX)) {
 		uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, ind, ind_type, (cst != CST_FUND) ? ind->xy : INVALID_TILE);
 		if (GB(callback, 0, 8) != 0xFF) return GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback);
 	}
@@ -291,7 +291,7 @@
 
 		/* Get the additional purchase info text, if it has not already been */
 		if (this->text[this->selected_index] == STR_NULL) {   // Have i been called already?
-			if (HasBit(indsp->callback_flags, CBM_IND_FUND_MORE_TEXT)) {          // No. Can it be called?
+			if (HasBit(indsp->callback_mask, CBM_IND_FUND_MORE_TEXT)) {          // No. Can it be called?
 				uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_FUND_MORE_TEXT, 0, 0, NULL, this->selected_type, INVALID_TILE);
 				if (callback_res != CALLBACK_FAILED) {  // Did it failed?
 					StringID newtxt = GetGRFStringID(indsp->grf_prop.grffile->grfid, 0xD000 + callback_res);  // No. here's the new string
@@ -508,7 +508,7 @@
 		SetDParam(0, this->window_number);
 		this->DrawWidgets();
 
-		if (HasBit(ind->callback_flags, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_flags, CBM_IND_PRODUCTION_256_TICKS)) {
+		if (HasBit(ind->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_mask, CBM_IND_PRODUCTION_256_TICKS)) {
 			for (byte j = 0; j < lengthof(i->accepts_cargo); j++) {
 				if (i->accepts_cargo[j] == CT_INVALID) continue;
 				has_accept = true;
@@ -566,7 +566,7 @@
 		}
 
 		/* Get the extra message for the GUI */
-		if (HasBit(ind->callback_flags, CBM_IND_WINDOW_MORE_TEXT)) {
+		if (HasBit(ind->callback_mask, CBM_IND_WINDOW_MORE_TEXT)) {
 			uint16 callback_res = GetIndustryCallback(CBID_INDUSTRY_WINDOW_MORE_TEXT, 0, 0, i, i->type, i->xy);
 			if (callback_res != CALLBACK_FAILED) {
 				StringID message = GetGRFStringID(ind->grf_prop.grffile->grfid, 0xD000 + callback_res);
--- a/src/industrytype.h
+++ b/src/industrytype.h
@@ -126,7 +126,7 @@
 	uint8 number_of_sounds;               ///< Number of sounds available in the sounds array
 	const uint8 *random_sounds;           ///< array of random sounds.
 	/* Newgrf data */
-	uint16 callback_flags;                ///< Flags telling which grf callback is set
+	uint16 callback_mask;                 ///< Bitmask of industry callbacks that have to be called
 	uint8 cleanup_flag;                   ///< flags indicating which data should be freed upon cleaning up
 	bool enabled;                         ///< entity still avaible (by default true).newgrf can disable it, though
 	struct GRFFileProps grf_prop;         ///< properties related the the grf file
@@ -164,7 +164,7 @@
 	bool anim_state;                      ///< When true, the tile has to be drawn using the animation
 	                                      ///< state instead of the construction state
 	/* Newgrf data */
-	uint8 callback_flags;                 ///< Flags telling which grf callback is set
+	uint8 callback_mask;                  ///< Bitmask of industry tile callbacks that have to be called
 	uint16 animation_info;                ///< Information about the animation (is it looping, how many loops etc)
 	uint8 animation_speed;                ///< The speed of the animation
 	uint8 animation_triggers;             ///< When to start the animation
--- a/src/newgrf.cpp
+++ b/src/newgrf.cpp
@@ -696,7 +696,7 @@
 				break;
 
 			case 0x1E: // Callback
-				ei->callbackmask = grf_load_byte(&buf);
+				ei->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x1F: // Tractive effort coefficient
@@ -857,7 +857,7 @@
 				break;
 
 			case 0x17: // Callback mask
-				ei->callbackmask = grf_load_byte(&buf);
+				ei->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x18: // Tractive effort
@@ -971,7 +971,7 @@
 				break;
 
 			case 0x12: // Callback mask
-				ei->callbackmask = grf_load_byte(&buf);
+				ei->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x13: // Refit cost
@@ -1087,7 +1087,7 @@
 				break;
 
 			case 0x14: // Callback mask
-				ei->callbackmask = grf_load_byte(&buf);
+				ei->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x15: // Refit cost
@@ -1219,7 +1219,7 @@
 			} break;
 
 			case 0x0B: // Callback mask
-				statspec->callbackmask = grf_load_byte(&buf);
+				statspec->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x0C: // Disallowed number of platforms
@@ -1349,7 +1349,7 @@
 
 		switch (prop) {
 			case 0x08:
-				wf->callbackmask = grf_load_byte(&buf);
+				wf->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x09:
@@ -1596,7 +1596,7 @@
 				housespec->building_availability = (HouseZones)grf_load_word(&buf);
 				break;
 
-			case 0x14: // House callback flags
+			case 0x14: // House callback mask
 				housespec->callback_mask = grf_load_byte(&buf);
 				break;
 
@@ -1640,7 +1640,7 @@
 				housespec->class_id = AllocateHouseClassID(grf_load_byte(&buf), _cur_grffile->grfid);
 				break;
 
-			case 0x1D: // Callback flags 2
+			case 0x1D: // Callback mask part 2
 				housespec->callback_mask |= (grf_load_byte(&buf) << 8);
 				break;
 
@@ -2164,8 +2164,8 @@
 				tsp->slopes_refused = (Slope)grf_load_byte(&buf);
 				break;
 
-			case 0x0E: // Callback flags
-				tsp->callback_flags = grf_load_byte(&buf);
+			case 0x0E: // Callback mask
+				tsp->callback_mask = grf_load_byte(&buf);
 				break;
 
 			case 0x0F: // Animation information
@@ -2430,10 +2430,10 @@
 				indsp->prospecting_chance = grf_load_dword(&buf);
 				break;
 
-			case 0x21:   // Callback flags
-			case 0x22: { // Callback additional flags
+			case 0x21:   // Callback mask
+			case 0x22: { // Callback additional mask
 				byte aflag = grf_load_byte(&buf);
-				SB(indsp->callback_flags, (prop - 0x21) * 8, 8, aflag);
+				SB(indsp->callback_mask, (prop - 0x21) * 8, 8, aflag);
 			} break;
 
 			case 0x23: // removal cost multiplier
--- a/src/newgrf_callbacks.h
+++ b/src/newgrf_callbacks.h
@@ -263,6 +263,13 @@
 };
 
 /**
+ * Callback masks for canals.
+ */
+enum CanalCallbackMask {
+	CBM_CANAL_SPRITE_OFFSET       = 1, ///< Enable add sprite offset callback
+};
+
+/**
  * Callback masks for cargos.
  */
 enum CargoCallbackMask {
--- a/src/newgrf_canal.h
+++ b/src/newgrf_canal.h
@@ -29,7 +29,7 @@
 struct WaterFeature {
 	const SpriteGroup *group;
 	const GRFFile *grffile;   ///< newgrf where 'group' belongs to
-	uint8 callbackmask;
+	uint8 callback_mask;       ///< Bitmask of canal callbacks that have to be called
 	uint8 flags;
 };
 
--- a/src/newgrf_industries.cpp
+++ b/src/newgrf_industries.cpp
@@ -198,7 +198,7 @@
 		case 0x40:
 		case 0x41:
 		case 0x42: { // waiting cargo, but only if those two callback flags are set
-			uint16 callback = indspec->callback_flags;
+			uint16 callback = indspec->callback_mask;
 			if (HasBit(callback, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(callback, CBM_IND_PRODUCTION_256_TICKS)) {
 				if ((indspec->behaviour & INDUSTRYBEH_PROD_MULTI_HNDLING) != 0) {
 					return min(industry->incoming_cargo_waiting[variable - 0x40] / industry->prod_level, (uint16)0xFFFF);
@@ -495,7 +495,7 @@
 {
 	const IndustrySpec *indspec = GetIndustrySpec(type);
 
-	if (HasBit(indspec->callback_flags, CBM_IND_AVAILABLE)) {
+	if (HasBit(indspec->callback_mask, CBM_IND_AVAILABLE)) {
 		uint16 res = GetIndustryCallback(CBID_INDUSTRY_AVAILABLE, 0, creation_type, NULL, type, INVALID_TILE);
 		if (res != CALLBACK_FAILED) {
 			return (res == 0);
--- a/src/newgrf_industrytiles.cpp
+++ b/src/newgrf_industrytiles.cpp
@@ -241,7 +241,7 @@
 
 	if (ti->tileh != SLOPE_FLAT) {
 		bool draw_old_one = true;
-		if (HasBit(inds->callback_flags, CBM_INDT_DRAW_FOUNDATIONS)) {
+		if (HasBit(inds->callback_mask, CBM_INDT_DRAW_FOUNDATIONS)) {
 			/* Called to determine the type (if any) of foundation to draw for industry tile */
 			uint32 callback_res = GetIndustryTileCallback(CBID_INDUSTRY_DRAW_FOUNDATIONS, 0, 0, gfx, i, ti->tile);
 			draw_old_one = callback_res != 0;
@@ -304,7 +304,7 @@
 	const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
 	byte animation_speed = itspec->animation_speed;
 
-	if (HasBit(itspec->callback_flags, CBM_INDT_ANIM_SPEED)) {
+	if (HasBit(itspec->callback_mask, CBM_INDT_ANIM_SPEED)) {
 		uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIMATION_SPEED, 0, 0, gfx, ind, tile);
 		if (callback_res != CALLBACK_FAILED) animation_speed = Clamp(callback_res & 0xFF, 0, 16);
 	}
@@ -319,7 +319,7 @@
 	byte frame = GetIndustryAnimationState(tile);
 	uint16 num_frames = GB(itspec->animation_info, 0, 8);
 
-	if (HasBit(itspec->callback_flags, CBM_INDT_ANIM_NEXT_FRAME)) {
+	if (HasBit(itspec->callback_mask, CBM_INDT_ANIM_NEXT_FRAME)) {
 		uint16 callback_res = GetIndustryTileCallback(CBID_INDTILE_ANIM_NEXT_FRAME, HasBit(itspec->animation_special_flags, 0) ? Random() : 0, 0, gfx, ind, tile);
 
 		if (callback_res != CALLBACK_FAILED) {
--- a/src/newgrf_sound.cpp
+++ b/src/newgrf_sound.cpp
@@ -62,7 +62,7 @@
 	if (file == NULL) return false;
 
 	/* Check that the vehicle type uses the sound effect callback */
-	if (!HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_SOUND_EFFECT)) return false;
+	if (!HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_SOUND_EFFECT)) return false;
 
 	callback = GetVehicleCallback(CBID_VEHICLE_SOUND_EFFECT, event, 0, v->engine_type, v);
 	if (callback == CALLBACK_FAILED) return false;
--- a/src/newgrf_station.cpp
+++ b/src/newgrf_station.cpp
@@ -878,7 +878,7 @@
 
 	relocation = GetCustomStationRelocation(statspec, NULL, INVALID_TILE);
 
-	if (HasBit(statspec->callbackmask, CBM_STATION_SPRITE_LAYOUT)) {
+	if (HasBit(statspec->callback_mask, CBM_STATION_SPRITE_LAYOUT)) {
 		uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0x2110000, 0, statspec, NULL, INVALID_TILE);
 		if (callback != CALLBACK_FAILED) tile = callback;
 	}
@@ -969,7 +969,7 @@
 
 	uint8 animation_speed = ss->anim_speed;
 
-	if (HasBit(ss->callbackmask, CBM_STATION_ANIMATION_SPEED)) {
+	if (HasBit(ss->callback_mask, CBM_STATION_ANIMATION_SPEED)) {
 		uint16 callback = GetStationCallback(CBID_STATION_ANIMATION_SPEED, 0, 0, ss, st, tile);
 		if (callback != CALLBACK_FAILED) animation_speed = Clamp(callback & 0xFF, 0, 16);
 	}
@@ -981,7 +981,7 @@
 
 	bool frame_set_by_callback = false;
 
-	if (HasBit(ss->callbackmask, CBM_STATION_ANIMATION_NEXT_FRAME)) {
+	if (HasBit(ss->callback_mask, CBM_STATION_ANIMATION_NEXT_FRAME)) {
 		uint32 param = HasBit(ss->flags, SSF_CB141_RANDOM_BITS) ? Random() : 0;
 		uint16 callback = GetStationCallback(CBID_STATION_ANIM_NEXT_FRAME, param, 0, ss, st, tile);
 
--- a/src/newgrf_station.h
+++ b/src/newgrf_station.h
@@ -83,7 +83,7 @@
 
 	uint32 cargo_triggers; ///< Bitmask of cargo types which cause trigger re-randomizing
 
-	byte callbackmask; ///< Bitmask of callbacks to use, @see newgrf_callbacks.h
+	byte callback_mask; ///< Bitmask of station callbacks that have to be called
 
 	byte flags; ///< Bitmask of flags, bit 0: use different sprite set; bit 1: divide cargo about by station size
 
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -1155,7 +1155,7 @@
 
 					StringID str = STR_STATION_CLASS_DFLT;
 					if (statspec != NULL && statspec->name != 0) {
-						if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
+						if (HasBit(statspec->callback_mask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
 							GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->line_height - 2, 0, FILLRECT_CHECKER);
 						}
 						str = statspec->name;
@@ -1315,7 +1315,7 @@
 				/* Check station availability callback */
 				statspec = GetCustomStationSpec(_railstation.station_class, y);
 				if (statspec != NULL &&
-					HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
+					HasBit(statspec->callback_mask, CBM_STATION_AVAIL) &&
 					GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return;
 
 				_railstation.station_type = y;
@@ -1795,7 +1795,7 @@
 				DrawWaypointSprite(this->nested_array[BRWW_WAYPOINT_1 + i]->pos_x + TILE_PIXELS, bottom - TILE_PIXELS, this->hscroll.GetPosition() + i, _cur_railtype);
 
 				if (statspec != NULL &&
-						HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
+						HasBit(statspec->callback_mask, CBM_STATION_AVAIL) &&
 						GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
 					GfxFillRect(4 + i * 68, 18, 67 + i * 68, 75, 0, FILLRECT_CHECKER);
 				}
@@ -1816,7 +1816,7 @@
 				/* Check station availability callback */
 				const StationSpec *statspec = GetCustomStationSpec(STAT_CLASS_WAYP, type);
 				if (statspec != NULL &&
-						HasBit(statspec->callbackmask, CBM_STATION_AVAIL) &&
+						HasBit(statspec->callback_mask, CBM_STATION_AVAIL) &&
 						GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) return;
 
 				_cur_waypoint_type = type;
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -2020,7 +2020,7 @@
 		const Engine *e = Engine::Get(v->engine_type);
 		if (!e->CanCarryCargo()) continue;
 
-		if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_REFIT_CAPACITY)) {
+		if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_REFIT_CAPACITY)) {
 			/* Back up the cargo type */
 			CargoID temp_cid = v->cargo_type;
 			byte temp_subtype = v->cargo_subtype;
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -918,7 +918,7 @@
 	if (new_cid >= NUM_CARGO || !CanRefitTo(v->engine_type, new_cid)) return CMD_ERROR;
 
 	/* Check the refit capacity callback */
-	if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_REFIT_CAPACITY)) {
+	if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_REFIT_CAPACITY)) {
 		/* Back up the existing cargo type */
 		CargoID temp_cid = v->cargo_type;
 		byte temp_subtype = v->cargo_subtype;
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -1054,7 +1054,7 @@
 		}
 
 		/* Check if the station is buildable */
-		if (HasBit(statspec->callbackmask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
+		if (HasBit(statspec->callback_mask, CBM_STATION_AVAIL) && GB(GetStationCallback(CBID_STATION_AVAILABILITY, 0, 0, statspec, NULL, INVALID_TILE), 0, 8) == 0) {
 			return CMD_ERROR;
 		}
 	}
@@ -2306,7 +2306,7 @@
 
 			relocation = GetCustomStationRelocation(statspec, st, ti->tile);
 
-			if (HasBit(statspec->callbackmask, CBM_STATION_SPRITE_LAYOUT)) {
+			if (HasBit(statspec->callback_mask, CBM_STATION_SPRITE_LAYOUT)) {
 				uint16 callback = GetStationCallback(CBID_STATION_SPRITE_LAYOUT, 0, 0, statspec, st, ti->tile);
 				if (callback != CALLBACK_FAILED) tile = (callback & ~1) + GetRailStationAxis(ti->tile);
 			}
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -286,7 +286,7 @@
 		}
 
 		/* Check powered wagon / visual effect callback */
-		if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_TRAIN_WAGON_POWER)) {
+		if (HasBit(EngInfo(u->engine_type)->callback_mask, CBM_TRAIN_WAGON_POWER)) {
 			uint16 callback = GetVehicleCallback(CBID_TRAIN_WAGON_POWER, 0, 0, u->engine_type, u);
 
 			if (callback != CALLBACK_FAILED) u->tcache.cached_vis_effect = GB(callback, 0, 8);
@@ -328,7 +328,7 @@
 
 		/* check the vehicle length (callback) */
 		uint16 veh_len = CALLBACK_FAILED;
-		if (HasBit(EngInfo(u->engine_type)->callbackmask, CBM_VEHICLE_LENGTH)) {
+		if (HasBit(EngInfo(u->engine_type)->callback_mask, CBM_VEHICLE_LENGTH)) {
 			veh_len = GetVehicleCallback(CBID_VEHICLE_LENGTH, 0, 0, u->engine_type, u);
 		}
 		if (veh_len == CALLBACK_FAILED) veh_len = rvi_u->shorten_factor;
@@ -2006,7 +2006,7 @@
 	if (p2 != 0) {
 		/* turn a single unit around */
 
-		if (v->IsMultiheaded() || HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_ARTIC_ENGINE)) {
+		if (v->IsMultiheaded() || HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) {
 			return_cmd_error(STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS);
 		}
 
@@ -2104,7 +2104,7 @@
 		if (e->CanCarryCargo()) {
 			uint16 amount = CALLBACK_FAILED;
 
-			if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_REFIT_CAPACITY)) {
+			if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_REFIT_CAPACITY)) {
 				/* Back up the vehicle's cargo type */
 				CargoID temp_cid = v->cargo_type;
 				byte temp_subtype = v->cargo_subtype;
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -1361,7 +1361,7 @@
 	if (map != PAL_NONE) return map;
 
 	/* Check if we should use the colour map callback */
-	if (HasBit(EngInfo(engine_type)->callbackmask, CBM_VEHICLE_COLOUR_REMAP)) {
+	if (HasBit(EngInfo(engine_type)->callback_mask, CBM_VEHICLE_COLOUR_REMAP)) {
 		uint16 callback = GetVehicleCallback(CBID_VEHICLE_COLOUR_MAPPING, 0, 0, engine_type, v);
 		/* A return value of 0xC000 is stated to "use the default two-colour
 		 * maps" which happens to be the failure action too... */
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -163,7 +163,7 @@
 
 	do {
 		uint32 cmask = EngInfo(u->engine_type)->refit_mask;
-		byte callbackmask = EngInfo(u->engine_type)->callbackmask;
+		byte callback_mask = EngInfo(u->engine_type)->callback_mask;
 
 		/* Skip this engine if it has no capacity */
 		if (u->cargo_cap == 0) continue;
@@ -174,7 +174,7 @@
 			if (!HasBit(cmask, cid)) continue;
 
 			/* Check the vehicle's callback mask for cargo suffixes */
-			if (HasBit(callbackmask, CBM_VEHICLE_CARGO_SUFFIX)) {
+			if (HasBit(callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) {
 				/* Make a note of the original cargo type. It has to be
 				 * changed to test the cargo & subtype... */
 				CargoID temp_cargo = u->cargo_type;
@@ -495,7 +495,7 @@
 /** Get the cargo subtype text from NewGRF for the vehicle details window. */
 StringID GetCargoSubtypeText(const Vehicle *v)
 {
-	if (HasBit(EngInfo(v->engine_type)->callbackmask, CBM_VEHICLE_CARGO_SUFFIX)) {
+	if (HasBit(EngInfo(v->engine_type)->callback_mask, CBM_VEHICLE_CARGO_SUFFIX)) {
 		uint16 cb = GetVehicleCallback(CBID_VEHICLE_CARGO_SUFFIX, 0, 0, v->engine_type, v);
 		if (cb != CALLBACK_FAILED) {
 			return GetGRFStringID(GetEngineGRFID(v->engine_type), 0xD000 + cb);