Airport (tile) IDs
Airport and airport tile IDs are local to the NewGRF, you are free to choose any ID in the 0..255-range. For airport tiles, you should start your item definition with the 'substitute'-property, which allocates a new airport tile. The value of this property should be the ID of a default airport tile, which will be used instead of your item if it is not available for whatever reason (for example, missing NewGRF).
Furthermore, you can set the 'override'-property, which will cause the existing airport tile to be replaced with your item. For airports, there only is an 'override'-property, which acts as a combined substitute and override.
1.1 The id of airport to replace / override, see AirportTypes. This property must be set first, before any other properties or graphics.
|layouts||list of layouts|
|years_available||[start year, last year]|
|ttd_airport-type||0 ... 3|
Airport tile properties
1.1 The id of airport tile to override, see AirportTypes. This property must be set first, before any other properties or graphics.
1.1 Do not set this, unless you use old-style callbacks.
|animation_info||Array [ANIMATION_XXX, frame-count]||1.1 XXX = [LOOPING | NON_LOOPING], 1..253 frames|
1.1 See speed settings
|animation_triggers||bitmask(ANIM_TRIGGER_APT_XXX, ... )||
1.1 Bitmask of triggers that will trigger the
A number of variables are shared between airports and stations. These are listed on the stations page.
|layout||0 .. (number of layouts - 1)|
Airport tile variables
|relative_x||0..255||X-coordinate (top right -> bottom left) of the tile relative to the northernmost tile.|
|relative_y||0..255||Y-coordinate (top left -> bottom right) of the tile relative to the northernmost tile.|
A combination of relative_x and relative_y in the format 0xYYXX. Useful if you want to check for a single position. The builtin function relative_coord(x, y) may be useful when making comparisons.
The following variables require a signed x,y offset as parameters. The offset is relative to the current tile. Offset 0,0 means the current tile.
See tile slopes for an overview of possible values
|nearby_tile_is_same_airport||1 if the tile is part of the same airport, 0 otherwise|
|nearby_tile_is_water||1 if the tile is water, 0 otherwise|
|nearby_tile_terrain_type||TILETYPE_XX||TILETYPE_NORMAL, TILETYPE_DESERT, TILETYPE_RAIN_FOREST, TILETYPE_SNOW|
|nearby_tile_water_class||WATER_CLASS_XXX|| XXX = [NONE | SEA | CANAL | RIVER] Note that tiles for which |
|nearby_tile_height||0..120||The height of the lowest corner of the given tile.|
|nearby_tile_animation_frame||0..255||Animation frame of the given tile|
|nearby_tile_airporttile_id||0x00aa, 0xFFbb, 0xFFFE or 0xFFFF|| 0x00aa: The tile is an airport tile that is part of this GRF, the tile id is aa.|
0xFFbb: The tile is an original airport tile with id bb.
0xFFFE: The tile is an airport tile defined in another GRF.
0xFFFF: The tile is not an airport tile or it belongs to another GRF.
|default||Sprite set (with 1 sprite)|| Preview graphics to use in the build menu. One sprite per layout may be given, use the |
|additional_text||String|| Additional text to show in the buy menu. String may differ per layout, use the |
|layout_name||String|| Name of the airport layout in the variable |
Note that, although the airport isn't built yet, the
layout variable is always available and set to the layout the user has selected in the GUI.
Airport tile callbacks
|default||Sprite layout||Graphics for an airport tile|
|anim_next_frame||Next animation frame or CB_RESULT_XXX|| Called for every animation frame, returns the next frame to display. Alternatively, return CB_RESULT_NEXT_FRAME or CB_RESULT_STOP_ANIMATION to show the next frame or stop animation, respectively. Returning a sound effect in the high byte will cause that sound effect to be played.
|anim_control||Next animation frame or CB_RESULT_XXX||
Called whenever an animation trigger happens. Return the animation frame to show, or CB_RESULT_XXX with XXX = [CB_RESULT_START_ANIMATION | STOP_ANIMATION | DO_NOTHING] to respectively start the animation in its current frame, stop the animation or do nothing. Returning a sound effect in the high byte will cause that sound effect to be played.
|anim_speed||0 .. 16||Decide the time an animation frame should last. Return value is interpreted as (num_ticks = 2^anim_speed), which each tick lasting 30 ms. Avoid using this callback if possible, since it has to be called each tick for every animated tile. This can be used to create animation frames that last between 30 ms and 33 minutes.|
|foundations||CB_RESULT[_NO]_FOUNDATIONS||Return CB_RESULT_FOUNDATIONS to draw standard foundations (default) or CB_RESULT_NO_FOUNDATIONS to not draw them.|
|ANIM_TRIGGER_APT_BUILT||Airport is built (all tiles at the same time)|
|ANIM_TRIGGER_APT_TILELOOP||Airport tile is processed in the tileloop (at different times for different tiles)|
|ANIM_TRIGGER_APT_NEW_CARGO||New cargo arrives at the airport (all tiles at the same time)|
|ANIM_TRIGGER_APT_CARGO_TAKEN||All cargo of a cargo type is removed from the airport (all tiles at the same time)|
|ANIM_TRIGGER_APT_250_TICKS||Every 250 ticks (all tiles at the same time)|