OpenTTD Source
1.11.0-beta2
|
Go to the documentation of this file.
20 #include "table/strings.h"
41 return &AirportTileSpec::tiles[gfx];
59 memset(&AirportTileSpec::tiles, 0,
sizeof(AirportTileSpec::tiles));
66 void AirportTileOverrideManager::SetEntitySpec(
const AirportTileSpec *airpts)
71 grfmsg(1,
"AirportTile.SetEntitySpec: Too many airport tiles allocated. Ignoring.");
75 memcpy(&AirportTileSpec::tiles[airpt_id], airpts,
sizeof(*airpts));
84 overridden_airpts->
enabled =
false;
86 grfid_overrides[i] = 0;
128 if (!st->TileBelongsToAirport(tile)) {
138 return 0xFF << 8 | gfx;
158 return 0xFF << 8 | ats->
grf_prop.subst_id;
163 assert(this->
st !=
nullptr);
186 if (this->
st->TileBelongsToAirport(tile)) {
196 DEBUG(grf, 1,
"Unhandled airport tile variable 0x%X", variable);
217 CallbackID callback, uint32 callback_param1, uint32 callback_param2)
218 :
ResolverObject(ats->grf_prop.
grffile, callback, callback_param1, callback_param2), tiles_scope(*this, ats, tile, st)
225 return GSF_AIRPORTTILES;
236 return object.ResolveCallback();
248 DrawWaterClassGround(ti);
260 bool draw_old_one =
true;
272 if (group ==
nullptr || group->type != SGT_TILELAYOUT) {
293 if (ats ==
nullptr)
return;
311 if (st->TileBelongsToAirport(tile)) AirportTileAnimationTrigger(st, tile, trigger, cargo_type);
uint32 TileIndex
The index/ID of a Tile.
static const uint INVALID_AIRPORTTILE
id for an invalid airport tile
uint16 override
id of the entity been replaced by
byte StationGfx
Copy from station_map.h.
static Titem * Get(size_t index)
Returns Titem with given index.
TileIndex tile
Tile for the callback, only valid for airporttile callbacks.
uint32 GetRandomBits() const override
Get a few random bits.
@ CBM_AIRT_ANIM_NEXT_FRAME
decides next animation frame
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
Town * ClosestTownFromTile(TileIndex tile, uint threshold)
Return the town closest (in distance or ownership) to a given tile, within a given threshold.
@ TO_BUILDINGS
company buildings - depots, stations, HQ, ...
Tile information, used while rendering the tile.
@ SPRITE_WIDTH
number of bits for the sprite number
uint32 GetVariable(byte variable, uint32 parameter, bool *available) const override
Get a variable value.
void CDECL grfmsg(int severity, const char *str,...)
DEBUG() function dedicated to newGRF debugging messages Function is essentially the same as DEBUG(grf...
static void ChangeAnimationFrame(CallbackID cb, const AirportTileSpec *spec, Station *obj, TileIndex tile, uint32 random_bits, uint32 trigger, int extra_data=0)
Check a callback to determine what the next animation step is and execute that step.
Tindex index
Index of this pool item.
SpriteID sprite
The 'real' sprite.
struct Station * st
Station of the airport for which the callback is run, or nullptr for build gui.
Interface for SpriteGroup-s to access the gamestate.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
const GRFFile * grffile
GRFFile the resolved SpriteGroup belongs to.
static uint32 GetNearbyAirportTileInformation(byte parameter, TileIndex tile, StationID index, bool grf_version8)
Based on newhouses/newindustries equivalent, but adapted for airports.
const DrawTileSprites * ProcessRegisters(uint8 *stage) const
Process registers and the construction stage into the sprite layout.
static void AnimateTile(const AirportTileSpec *spec, Station *obj, TileIndex tile, bool random_animation, int extra_data=0)
Animate a single tile.
CallbackID
List of implemented NewGRF callbacks.
bool ConvertBooleanCallback(const GRFFile *grffile, uint16 cbid, uint16 cb_res)
Converts a callback result into a boolean.
uint32 GetDebugID() const override
Get an identifier for the item being resolved.
uint8 animation_special_flags
Extra flags to influence the animation.
Owner owner
The owner of this station.
HouseZonesBits GetTownRadiusGroup(const Town *t, TileIndex tile)
Returns the bit corresponding to the town zone of the specified tile.
Slope tileh
Slope of the tile.
uint32 SpriteID
The number of a sprite, without mapping bits and colourtables.
static bool IsTileOnWater(TileIndex t)
Tests if the tile was built on water.
static void ResetAirportTiles()
This function initializes the tile array of AirportTileSpec.
PalSpriteID ground
Palette and sprite for the ground.
Defines the data structure of each individual tile of an airport.
static byte GetAnimationFrame(TileIndex t)
Get the current animation frame.
static void DrawNewGRFTileSeq(const struct TileInfo *ti, const DrawTileSprites *dts, TransparencyOption to, uint32 stage, PaletteID default_palette)
Draw NewGRF industrytile or house sprite layout.
static StationGfx GetAirportGfx(TileIndex t)
Get the station graphics of this airport tile.
#define TILE_AREA_LOOP(var, ta)
A loop which iterates over the tiles of a TileArea.
@ CBID_AIRPTILE_ANIM_NEXT_FRAME
Called to determine airport tile next animation frame.
uint16 random_bits
Random bits assigned to this station.
#define DEBUG(name, level,...)
Output a line of debugging information.
const SpriteGroup * root_spritegroup
Root SpriteGroup to use for resolving.
Airport airport
Tile area the airport covers.
static const uint NUM_AIRPORTTILES
Total number of airport tiles.
static const AirportTileSpec * GetByTile(TileIndex tile)
Retrieve airport tile spec for the given airport tile.
Ground palette sprite of a tile, together with its sprite layout.
uint32 GetNearbyTileInformation(TileIndex tile, bool grf_version8)
Common part of station var 0x67, house var 0x62, indtile var 0x60, industry var 0x62.
uint32 GetRelativePosition(TileIndex tile, TileIndex ind_tile)
This is the position of the tile relative to the northernmost tile of the industry.
static uint32 GetAirportTileIDAtOffset(TileIndex tile, const Station *st, uint32 cur_grfid)
Make an analysis of a tile and check whether it belongs to the same airport, and/or the same grf file...
static bool IsTileType(TileIndex tile, TileType type)
Checks if a tile is a given tiletype.
static bool IsAirport(TileIndex t)
Is this station tile an airport?
static PaletteID GroundSpritePaletteTransform(SpriteID image, PaletteID pal, PaletteID default_pal)
Applies PALETTE_MODIFIER_COLOUR to a palette entry of a ground sprite.
void DrawFoundation(TileInfo *ti, Foundation f)
Draw foundation f at tile ti.
AirportTileScopeResolver tiles_scope
Scope resolver for the tiles.
virtual const SpriteGroup * Resolve(ResolverObject &object) const
Base sprite group resolver.
static const uint CALLBACK_FAILED
Different values for Callback result evaluations.
@ CBM_AIRT_DRAW_FOUNDATIONS
decides if default foundations need to be drawn
const struct SpriteGroup * spritegroup[Tcnt]
pointer to the different sprites of the entity
static const AirportTileSpec _origin_airporttile_specs[]
All default airport tiles.
@ CBID_AIRPTILE_ANIM_START_STOP
Called for periodically starting or stopping the animation.
AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st, CallbackID callback=CBID_NO_CALLBACK, uint32 callback_param1=0, uint32 callback_param2=0)
Constructor of the resolver for airport tiles.
@ CBID_AIRPTILE_DRAW_FOUNDATIONS
Called to determine the type (if any) of foundation to draw for an airport tile.
uint8 callback_mask
Bitmask telling which grf callback is set.
TileIndex tile
The base tile of the area.
@ FOUNDATION_LEVELED
The tile is leveled up to a flat slope.
bool enabled
entity still available (by default true). newgrf can disable it, though
@ MP_STATION
A tile of a station.
void ResetOverride()
Resets the override, which is used while initializing game.
static Station * GetByTile(TileIndex tile)
Get the station belonging to a specific tile.
static StationID GetStationIndex(TileIndex t)
Get StationID from a tile.
#define MAX_UVALUE(type)
The largest value that can be entered in a variable.
StationGfx GetTranslatedAirportTileID(StationGfx gfx)
Do airporttile gfx ID translation for NewGRFs.
static byte GetStationTileRandomBits(TileIndex t)
Get the random bits of a station tile.
uint16 triggers
The triggers that trigger animation.
Helper class for a unified approach to NewGRF animation.
#define lengthof(x)
Return the length of an fixed size array.
Helper class for animation control.
byte CargoID
Cargo slots to indicate a cargo type within a game.
TileIndex GetNearbyTile(byte parameter, TileIndex tile, bool signed_offsets, Axis axis)
Get the tile at the given offset.
uint16 max_offset
what is the length of the original entity's array of specs
static const TileIndex INVALID_TILE
The very nice invalid tile marker.
static const uint NEW_AIRPORTTILE_OFFSET
offset of first newgrf airport tile
virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id)
Reserves a place in the mapping array for an entity to be installed.
uint16 local_id
id defined by the grf file for this entity
PaletteID pal
The palette (use PAL_NONE) if not needed)
TileIndex tile
Tile index.
Resolver for tiles of an airport.
ResolverObject & ro
Surrounding resolver object.
AirpAnimationTrigger
Animation triggers for airport tiles.
const struct GRFFile * grffile
grf file that introduced this entity
@ CBID_AIRPTILE_ANIMATION_SPEED
Called to indicate how long the current animation frame should last.
static const AirportTileSpec * Get(StationGfx gfx)
Retrieve airport tile spec for the given airport tile.
GRFFileProps grf_prop
properties related the the grf file
GrfSpecFeature GetFeature() const override
Get the feature number being resolved for.
void DrawGroundSprite(SpriteID image, PaletteID pal, const SubSprite *sub, int extra_offs_x, int extra_offs_y)
Draws a ground sprite for the current tile.
uint32 GetTerrainType(TileIndex tile, TileContext context)
Function used by houses (and soon industries) to get information on type of "terrain" the tile it is ...
uint16 invalid_ID
ID used to detected invalid entities;.
Action 2 sprite layout for houses, industry tiles, objects and airport tiles.
AnimationInfo animation
Information about the animation.
AirportTileCallbackMask
Callback masks for airport tiles.
@ CBM_AIRT_ANIM_SPEED
decides animation speed