OpenTTD
newgrf_callbacks.h
Go to the documentation of this file.
1 /* $Id: newgrf_callbacks.h 26747 2014-08-17 14:53:11Z frosch $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef NEWGRF_CALLBACKS_H
13 #define NEWGRF_CALLBACKS_H
14 
22 enum CallbackID {
25 
28 
29  /* There are no callbacks 0x02 - 0x0F. */
30 
32  CBID_VEHICLE_VISUAL_EFFECT = 0x10, // 8 bit callback
33 
36 
38  CBID_VEHICLE_LOAD_AMOUNT = 0x12, // 8 bit callback
39 
41  CBID_STATION_AVAILABILITY = 0x13, // 8 bit callback
42 
45 
50  CBID_VEHICLE_REFIT_CAPACITY = 0x15, // 15 bit callback
51 
53  CBID_VEHICLE_ARTIC_ENGINE = 0x16, // 8 bit callback for grf version < 8
54 
56  CBID_HOUSE_ALLOW_CONSTRUCTION = 0x17, // 8 bit callback
57 
59  CBID_GENERIC_AI_PURCHASE_SELECTION = 0x18, // 8 bit callback, implemented for stations only
60 
63 
65  CBID_HOUSE_ANIMATION_NEXT_FRAME = 0x1A, // 15 bit callback
66 
68  CBID_HOUSE_ANIMATION_START_STOP = 0x1B, // 15 bit callback
69 
71  CBID_HOUSE_CONSTRUCTION_STATE_CHANGE = 0x1C, // 15 bit callback
72 
75 
77  CBID_HOUSE_COLOUR = 0x1E, // 15 bit callback
78 
80  CBID_HOUSE_CARGO_ACCEPTANCE = 0x1F, // 15 bit callback
81 
83  CBID_HOUSE_ANIMATION_SPEED = 0x20, // 8 bit callback
84 
86  CBID_HOUSE_DESTRUCTION = 0x21, // 8 bit callback
87 
89  CBID_INDUSTRY_PROBABILITY = 0x22, // 15 bit callback
90 
96 
98  CBID_STATION_TILE_LAYOUT = 0x24, // 15 bit callback
99 
101  CBID_INDTILE_ANIM_START_STOP = 0x25, // 15 bit callback
102 
104  CBID_INDTILE_ANIM_NEXT_FRAME = 0x26, // 15 bit callback
105 
107  CBID_INDTILE_ANIMATION_SPEED = 0x27, // 8 bit callback
108 
110  CBID_INDUSTRY_LOCATION = 0x28, // 15 bit callback
111 
113  CBID_INDUSTRY_PRODUCTION_CHANGE = 0x29, // 15 bit callback
114 
116  CBID_HOUSE_ACCEPT_CARGO = 0x2A, // 15 bit callback
117 
119  CBID_INDTILE_CARGO_ACCEPTANCE = 0x2B, // 15 bit callback
120 
122  CBID_INDTILE_ACCEPT_CARGO = 0x2C, // 15 bit callback
123 
128  CBID_VEHICLE_COLOUR_MAPPING = 0x2D, // 15 bit callback
129 
131  CBID_HOUSE_PRODUCE_CARGO = 0x2E, // 15 bit callback
132 
134  CBID_INDTILE_SHAPE_CHECK = 0x2F, // 15 bit callback
135 
137  CBID_INDTILE_DRAW_FOUNDATIONS = 0x30, // 15 bit callback
138 
143  CBID_VEHICLE_START_STOP_CHECK = 0x31, // 15 bit callback, but 0xFF test is done with 8 bit
144 
146  CBID_VEHICLE_32DAY_CALLBACK = 0x32, // 2 bit callback
147 
149  CBID_VEHICLE_SOUND_EFFECT = 0x33, // 15 bit callback
150 
152  CBID_VEHICLE_AUTOREPLACE_SELECTION = 0x34, // 15 bit callback, not implemented
153 
155  CBID_INDUSTRY_MONTHLYPROD_CHANGE = 0x35, // 15 bit callback
156 
161  CBID_VEHICLE_MODIFY_PROPERTY = 0x36, // 8/15 bit depends on queried property
162 
164  CBID_INDUSTRY_CARGO_SUFFIX = 0x37, // 15 bit callback, but 0xFF test is done with 8 bit
165 
167  CBID_INDUSTRY_FUND_MORE_TEXT = 0x38, // 15 bit callback
168 
170  CBID_CARGO_PROFIT_CALC = 0x39, // 15 bit callback
171 
173  CBID_INDUSTRY_WINDOW_MORE_TEXT = 0x3A, // 15 bit callback
174 
176  CBID_INDUSTRY_SPECIAL_EFFECT = 0x3B, // 15 bit callback
177 
179  CBID_INDTILE_AUTOSLOPE = 0x3C, // 15 bit callback
180 
182  CBID_INDUSTRY_REFUSE_CARGO = 0x3D, // 15 bit callback
183 
184  /* There are no callbacks 0x3E - 0x13F */
185 
187  CBID_STATION_ANIM_START_STOP = 0x140, // 15 bit callback
188 
190  CBID_STATION_ANIM_NEXT_FRAME = 0x141, // 15 bit callback
191 
193  CBID_STATION_ANIMATION_SPEED = 0x142, // 8 bit callback
194 
196  CBID_HOUSE_DENY_DESTRUCTION = 0x143, // 15 bit callback
197 
199  CBID_SOUNDS_AMBIENT_EFFECT = 0x144, // 15 bit callback
200 
202  CBID_CARGO_STATION_RATING_CALC = 0x145, // 15 bit callback
203 
205  CBID_NEW_SIGNALS_SPRITE_DRAW = 0x146, // 15 bit callback, not implemented
206 
208  CBID_CANALS_SPRITE_OFFSET = 0x147, // 15 bit callback
209 
211  CBID_HOUSE_WATCHED_CARGO_ACCEPTED = 0x148, // 15 bit callback
212 
214  CBID_STATION_LAND_SLOPE_CHECK = 0x149, // 15 bit callback
215 
217  CBID_INDUSTRY_DECIDE_COLOUR = 0x14A, // 4 bit callback
218 
220  CBID_INDUSTRY_INPUT_CARGO_TYPES = 0x14B, // 8 bit callback
221 
223  CBID_INDUSTRY_OUTPUT_CARGO_TYPES = 0x14C, // 8 bit callback
224 
226  CBID_HOUSE_CUSTOM_NAME = 0x14D, // 15 bit callback
227 
229  CBID_HOUSE_DRAW_FOUNDATIONS = 0x14E, // 15 bit callback
230 
232  CBID_HOUSE_AUTOSLOPE = 0x14F, // 15 bit callback
233 
235  CBID_AIRPTILE_DRAW_FOUNDATIONS = 0x150, // 15 bit callback
236 
238  CBID_AIRPTILE_ANIM_START_STOP = 0x152, // 15 bit callback
239 
241  CBID_AIRPTILE_ANIM_NEXT_FRAME = 0x153, // 15 bit callback
242 
244  CBID_AIRPTILE_ANIMATION_SPEED = 0x154, // 8 bit callback
245 
250  CBID_AIRPORT_ADDITIONAL_TEXT = 0x155, // 15 bit callback
251 
253  CBID_AIRPORT_LAYOUT_NAME = 0x156, // 15 bit callback
254 
256  CBID_OBJECT_LAND_SLOPE_CHECK = 0x157, // 15 bit callback
257 
259  CBID_OBJECT_ANIMATION_NEXT_FRAME = 0x158, // 15 bit callback
260 
262  CBID_OBJECT_ANIMATION_START_STOP = 0x159, // 15 bit callback
263 
265  CBID_OBJECT_ANIMATION_SPEED = 0x15A, // 8 bit callback
266 
268  CBID_OBJECT_COLOUR = 0x15B, // 15 bit callback
269 
271  CBID_OBJECT_FUND_MORE_TEXT = 0x15C, // 15 bit callback
272 
274  CBID_OBJECT_AUTOSLOPE = 0x15D, // 15 bit callback
275 
277  CBID_VEHICLE_REFIT_COST = 0x15E, // 15 bit callback
278 
280  CBID_INDUSTRY_PROD_CHANGE_BUILD = 0x15F, // 15 bit callback
281 
283  CBID_VEHICLE_SPAWN_VISUAL_EFFECT = 0x160, // 15 bit callback
284 };
285 
299 };
300 
310 };
311 
329 };
330 
336 };
337 
344 };
345 
365 };
366 
378 };
379 
390 };
391 
401 };
402 
406 static const uint CALLBACK_FAILED = 0xFFFF;
407 static const uint CALLBACK_HOUSEPRODCARGO_END = 0x20FF;
408 
409 #endif /* NEWGRF_CALLBACKS_H */
customize the cargoes the industry produces
This callback is called from airport list.
initialise production level on construction
Called to determine if the given industry can be built on specific area.
Use callback to select a sprite layout to use.
static const uint CALLBACK_FAILED
Different values for Callback result evaluations.
decides next animation frame
decides accepted types
decides animation speed
Called to determine airport tile next animation frame.
Called to determine more text in the fund object window.
decides animation speed
decides slope suitability
Called to determine if one can alter the ground below a house tile.
Called to determine if the given industry tile can be built on specific tile.
Called to spawn visual effects for vehicles.
Customize the input cargo types of a newly build industry.
Builds articulated engines for trains and RVs.
Called periodically to determine if a house should be destroyed.
Called to indicate how long the current animation frame should last.
Return the vehicles this given vehicle can be "upgraded" to.
Called monthly on production changes, so it can be adjusted more frequently.
Called for periodically starting or stopping the animation.
additional text in fund window
Called when the company (or AI) tries to start or stop a vehicle.
Called to calculate the income of delivered cargo.
custom profit calculation
Set when using the callback resolve system, but not to resolve a callback.
Enable add sprite offset callback.
Determine the next animation frame for a house.
Cargo capacity after refit.
check industry construction on given area
change animation when construction state changes
AI construction/purchase selection.
Determine whether a wagon can be attached to an already existing train.
Called to determine whether a town building can be destroyed.
Called to determine which cargoes a town building should accept.
Visual effects and wagon power.
Called to indicate how long the current animation frame should last.
Determine the cargo "suffixes" for each refit possibility of a cargo.
Callback done for each tile of an object to check the slope.
control special effects
Vehicle uses custom sound effects.
Use a custom next frame callback.
Determine whether a newstation should be made available to build.
decides animation speed
decides amount of cargo acceptance
IndustryCallbackMask
Callback masks for Industries.
Called to determine more text in the fund industry window.
Called to determine the type (if any) of foundation to draw for house tile.
Callback done for each tile of a station to check the slope.
decides allowance of autosloping
decides allowance of autosloping
ObjectCallbackMask
Callback masks for objects.
Called to determine the colour of a town building.
Called to determine the cost factor for refitting a vehicle.
This callback is called from vehicle purchase lists.
Called on the Get Tile Description for an house tile.
Customize the output cargo types of a newly build industry.
Called when a cargo type specified in property 20 is accepted.
decides if default foundations need to be drawn
Called to indicate how long the current animation frame should last.
Customize the animation speed of the station.
Called to play a special sound effect.
Called to determine if the given industry type is available.
controls random production change
decides next animation frame
decides if default foundations need to be drawn
Called to modify various vehicle properties.
Called to determine if industry can alter the ground below industry tile.
custom cargo production
Called to determine the type (if any) of foundation to draw for industry tile.
trigger destruction of building
IndustryTileCallbackMask
Callback masks for industry tiles.
Show suffix after cargo name.
Called to indicate how long the current animation frame should last.
Add an offset to the default sprite numbers to show another sprite.
Vehicle length (trains and road vehicles)
decide the colour of the building
Called for periodically starting or stopping the animation.
decides amount of cargo acceptance
additional text in industry window
CargoCallbackMask
Callback masks for cargoes.
Called to determine text to show as airport layout name.
Change colour mapping of vehicle.
decides allowance of autosloping
StationCallbackMask
Callback masks for stations.
decides next animation frame
customize the cargoes the industry requires
additional text in fund window
AirportTileCallbackMask
Callback masks for airport tiles.
decides animation speed
Called when building a station to customize the tile layout.
Called to determine if a specific colour map should be used for a vehicle instead of the default live...
periodically start/stop the animation
decide the colour of the building
decides accepted types
Called to determine if the industry can still accept or refuse more cargo arrival.
Add articulated engines (trains and road vehicles)
Called whenever the construction state of a house changes.
decides slope suitability
CanalCallbackMask
Callback masks for canals.
Called to determine the colour of an industry.
industry availability/probability callback
controls monthly random production change
Called to determine which cargoes an industry should accept.
Determine whether the house can be built on the specified tile.
Called for every vehicle every 32 days (not all on same date though).
Called to determine the type (if any) of foundation to draw for an airport tile.
Determine the amount of cargo to load per unit of time when using gradual loading.
Refit capacity, the passed vehicle needs to have its ->cargo_type set to the cargo we are refitting t...
Called to determine industry tile next animation frame.
option out of accepting cargo
Called for periodically starting or stopping the animation.
decides next animation frame
VehicleCallbackMask
Callback masks for vehicles, indicates which callbacks are used by a vehicle.
Availability of station in construction window.
Called to determine station tile next animation frame.
Called to query the cargo acceptance of the industry tile.
call production callback when cargo arrives at the industry
Called to indicate how long the current animation frame should last.
cargo sub-type display
decides if default foundations need to be drawn
conditional protection
Allow signal sprites to be replaced dynamically.
Called to determine text to display after cargo name.
CallbackID
List of implemented NewGRF callbacks.
Called for periodically starting or stopping the animation.
decides allowance of autosloping
Select an ambient sound to play for a given type of tile.
Set when calling a randomizing trigger (almost undocumented).
Called to determine the colour of a town building.
Choose a sprite layout to draw, instead of the standard 0-7 range.
Called to determine more text in the industry window.
Check slope of new station tiles.
Determine the next animation frame for a house.
Called to determine if one can alter the ground below an object tile.
Called to determine how much cargo a town building produces.
Vehicle length, returns the amount of 1/8&#39;s the vehicle is shorter for trains and RVs...
decide whether the house can be built on a given tile
Called to decide how much cargo a town building can accept.
Called to determine industry special effects.
static const uint CALLBACK_HOUSEPRODCARGO_END
Sentinel indicating that the loop for CBID_HOUSE_PRODUCE_CARGO has ended.
call production callback every 256 ticks
Called when industry is built to set initial production level.
custom station rating for this cargo type
Called on production changes, so it can be adjusted.
Called to calculate part of a station rating.
Visual effects and wagon power (trains, road vehicles and ships)
Called for periodically starting or stopping the animation.
give a custom colour to newly build industries
decides slope suitability
HouseCallbackMask
Callback masks for houses.