OpenTTD Source  20241121-master-g67a0fccfad
newgrf_airporttiles.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenTTD.
3  * 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.
4  * 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.
5  * 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/>.
6  */
7 
10 #ifndef NEWGRF_AIRPORTTILES_H
11 #define NEWGRF_AIRPORTTILES_H
12 
13 #include "airport.h"
14 #include "station_map.h"
15 #include "newgrf_animation_type.h"
16 #include "newgrf_commons.h"
17 #include "newgrf_spritegroup.h"
18 #include "station_base.h"
19 
22  struct Station *st;
23  uint8_t airport_id;
25  const AirportTileSpec *ats;
26 
34  : ScopeResolver(ro), st(st), tile(tile), ats(ats)
35  {
36  assert(st != nullptr);
37  this->airport_id = st->airport.type;
38  }
39 
40  uint32_t GetRandomBits() const override;
41  uint32_t GetVariable(uint8_t variable, [[maybe_unused]] uint32_t parameter, bool &available) const override;
42 };
43 
48 
51 
52  ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, uint8_t relative = 0) override
53  {
54  switch (scope) {
55  case VSG_SCOPE_SELF: return &tiles_scope;
56  case VSG_SCOPE_PARENT: return &airport_scope;
57  default: return ResolverObject::GetScope(scope, relative);
58  }
59  }
60 
61  GrfSpecFeature GetFeature() const override;
62  uint32_t GetDebugID() const override;
63 };
64 
71  uint8_t callback_mask;
73  bool enabled;
75 
76  static const AirportTileSpec *Get(StationGfx gfx);
77  static const AirportTileSpec *GetByTile(TileIndex tile);
78 
79  static void ResetAirportTiles();
80 
81 private:
82  static AirportTileSpec tiles[NUM_AIRPORTTILES];
83 
84  friend void AirportTileOverrideManager::SetEntitySpec(const AirportTileSpec *airpts);
85 };
86 
87 void AnimateAirportTile(TileIndex tile);
88 void AirportTileAnimationTrigger(Station *st, TileIndex tile, AirpAnimationTrigger trigger, CargoID cargo_type = INVALID_CARGO);
89 void AirportAnimationTrigger(Station *st, AirpAnimationTrigger trigger, CargoID cargo_type = INVALID_CARGO);
90 bool DrawNewAirportTile(TileInfo *ti, Station *st, const AirportTileSpec *airts);
91 
92 #endif /* NEWGRF_AIRPORTTILES_H */
Various declarations for airports.
static const uint NUM_AIRPORTTILES
Total number of airport tiles.
Definition: airport.h:23
uint8_t CargoID
Cargo slots to indicate a cargo type within a game.
Definition: cargo_type.h:22
GrfSpecFeature
Definition: newgrf.h:67
uint8_t StationGfx
Copy from station_map.h.
Definitions related to NewGRF animation.
AirpAnimationTrigger
Animation triggers for airport tiles.
CallbackID
List of implemented NewGRF callbacks.
@ CBID_NO_CALLBACK
Set when using the callback resolve system, but not to resolve a callback.
This file simplyfies and embeds a common mechanism of loading/saving and mapping of grf entities.
Action 2 handling.
VarSpriteGroupScope
@ VSG_SCOPE_SELF
Resolved object itself.
@ VSG_SCOPE_PARENT
Related object of the resolved one.
Base classes/functions for stations.
Maps accessors for stations.
uint32_t StringID
Numeric value that represents a string, independent of the selected language.
Definition: strings_type.h:16
Resolver for the airport scope.
Resolver for tiles of an airport.
AirportScopeResolver airport_scope
Scope resolver for the airport owning the tile.
AirportTileScopeResolver tiles_scope
Scope resolver for the tiles.
GrfSpecFeature GetFeature() const override
Get the feature number being resolved for.
ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0) override
Get a resolver for the scope.
uint32_t GetDebugID() const override
Get an identifier for the item being resolved.
AirportTileResolverObject(const AirportTileSpec *ats, TileIndex tile, Station *st, CallbackID callback=CBID_NO_CALLBACK, uint32_t callback_param1=0, uint32_t callback_param2=0)
Constructor of the resolver for airport tiles.
Scope resolver for handling the tiles of an airport.
uint8_t airport_id
Type of airport for which the callback is run.
struct Station * st
Station of the airport for which the callback is run, or nullptr for build gui.
uint32_t GetVariable(uint8_t variable, [[maybe_unused]] uint32_t parameter, bool &available) const override
Get a variable value.
AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st)
Constructor of the scope resolver specific for airport tiles.
TileIndex tile
Tile for the callback, only valid for airporttile callbacks.
uint32_t GetRandomBits() const override
Get a few random bits.
Defines the data structure of each individual tile of an airport.
bool enabled
entity still available (by default true). newgrf can disable it, though
static const AirportTileSpec * Get(StationGfx gfx)
Retrieve airport tile spec for the given airport tile.
StringID name
Tile Subname string, land information on this tile will give you "AirportName (TileSubname)".
AnimationInfo animation
Information about the animation.
static const AirportTileSpec * GetByTile(TileIndex tile)
Retrieve airport tile spec for the given airport tile.
GRFFileProps grf_prop
properties related the the grf file
static void ResetAirportTiles()
This function initializes the tile array of AirportTileSpec.
uint8_t animation_special_flags
Extra flags to influence the animation.
uint8_t callback_mask
Bitmask telling which grf callback is set.
uint8_t type
Type of this airport,.
Definition: station_base.h:294
Information about animation.
Data related to the handling of grf files.
Interface for SpriteGroup-s to access the gamestate.
uint32_t callback_param2
Second parameter (var 18) of the callback.
CallbackID callback
Callback being resolved.
uint32_t callback_param1
First parameter (var 10) of the callback.
virtual ScopeResolver * GetScope(VarSpriteGroupScope scope=VSG_SCOPE_SELF, uint8_t relative=0)
Get a resolver for the scope.
Interface to query and set values specific to a single VarSpriteGroupScope (action 2 scope).
ResolverObject & ro
Surrounding resolver object.
Station data structure.
Definition: station_base.h:439
Airport airport
Tile area the airport covers.
Definition: station_base.h:453
Tile information, used while rendering the tile.
Definition: tile_cmd.h:43