OpenTTD Source  20241121-master-g67a0fccfad
newgrf_industrytiles.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_INDUSTRYTILES_H
11 #define NEWGRF_INDUSTRYTILES_H
12 
13 #include "newgrf_animation_type.h"
14 #include "newgrf_industries.h"
15 #include "core/random_func.hpp"
16 
21 
30  {
31  }
32 
33  uint32_t GetRandomBits() const override;
34  uint32_t GetVariable(uint8_t variable, [[maybe_unused]] uint32_t parameter, bool &available) const override;
35  uint32_t GetTriggers() const override;
36 };
37 
42  IndustryGfx gfx;
43 
44  IndustryTileResolverObject(IndustryGfx gfx, TileIndex tile, Industry *indus,
46 
47  ScopeResolver *GetScope(VarSpriteGroupScope scope = VSG_SCOPE_SELF, uint8_t relative = 0) override
48  {
49  switch (scope) {
50  case VSG_SCOPE_SELF: return &indtile_scope;
51  case VSG_SCOPE_PARENT: return &ind_scope;
52  default: return ResolverObject::GetScope(scope, relative);
53  }
54  }
55 
56  GrfSpecFeature GetFeature() const override;
57  uint32_t GetDebugID() const override;
58 };
59 
60 bool DrawNewIndustryTile(TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds);
61 uint16_t GetIndustryTileCallback(CallbackID callback, uint32_t param1, uint32_t param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile);
62 CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, size_t layout_index, uint16_t initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type);
63 
64 void AnimateNewIndustryTile(TileIndex tile);
65 bool StartStopIndustryTileAnimation(TileIndex tile, IndustryAnimationTrigger iat, uint32_t random = Random());
66 bool StartStopIndustryTileAnimation(const Industry *ind, IndustryAnimationTrigger iat);
67 
68 
74 };
76 void TriggerIndustry(Industry *ind, IndustryTileTrigger trigger);
77 
78 #endif /* NEWGRF_INDUSTRYTILES_H */
Common return value for all commands.
Definition: command_type.h:23
Owner
Enum for all companies/owners.
Definition: company_type.h:18
GrfSpecFeature
Definition: newgrf.h:67
Definitions related to NewGRF animation.
IndustryAnimationTrigger
Animation triggers of the industries.
CallbackID
List of implemented NewGRF callbacks.
@ CBID_NO_CALLBACK
Set when using the callback resolve system, but not to resolve a callback.
Functions for NewGRF industries.
IndustryAvailabilityCallType
From where has callback CBID_INDUSTRY_PROBABILITY been called.
void TriggerIndustry(Industry *ind, IndustryTileTrigger trigger)
Trigger a random trigger for all industry tiles.
CommandCost PerformIndustryTileSlopeCheck(TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, size_t layout_index, uint16_t initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
Check the slope of a tile of a new industry.
void TriggerIndustryTile(TileIndex t, IndustryTileTrigger trigger)
Trigger a random trigger for a single industry tile.
IndustryTileTrigger
Available industry tile triggers.
@ INDTILE_TRIGGER_TILE_LOOP
The tile of the industry has been triggered during the tileloop.
@ INDUSTRY_TRIGGER_INDUSTRY_TICK
The industry has been triggered via its tick.
@ INDUSTRY_TRIGGER_RECEIVED_CARGO
Cargo has been delivered.
VarSpriteGroupScope
@ VSG_SCOPE_SELF
Resolved object itself.
@ VSG_SCOPE_PARENT
Related object of the resolved one.
Pseudo random number generator.
Resolver for industry scopes.
Resolver for industry 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.
IndustriesScopeResolver ind_scope
Scope resolver for the industry owning the tile.
uint32_t GetDebugID() const override
Get an identifier for the item being resolved.
IndustryTileScopeResolver indtile_scope
Scope resolver for the industry tile.
IndustryTileResolverObject(IndustryGfx gfx, TileIndex tile, Industry *indus, CallbackID callback=CBID_NO_CALLBACK, uint32_t callback_param1=0, uint32_t callback_param2=0)
Constructor of the industry tiles scope resolver.
Resolver for the industry tiles scope.
IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile)
Constructor of the scope resolver for the industry tile.
uint32_t GetTriggers() const override
Get the triggers.
uint32_t GetRandomBits() const override
Get a few random bits.
Industry * industry
Industry owning the tiles.
uint32_t GetVariable(uint8_t variable, [[maybe_unused]] uint32_t parameter, bool &available) const override
Get a variable value.
TileIndex tile
Tile being resolved.
Defines the data structure of each individual tile of an industry.
Definition: industrytype.h:149
Defines the internal data of a functional industry.
Definition: industry.h:66
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.
Tile information, used while rendering the tile.
Definition: tile_cmd.h:43