OpenTTD Source  20241121-master-g67a0fccfad
newgrf_industries.h File Reference

Functions for NewGRF industries. More...

#include "newgrf_town.h"

Go to the source code of this file.

Data Structures

struct  IndustriesScopeResolver
 Resolver for industry scopes. More...
 
struct  IndustriesResolverObject
 Resolver for industries. More...
 

Enumerations

enum  IndustryTrigger { INDUSTRY_TRIGGER_TILELOOP_PROCESS = 1 , INDUSTRY_TRIGGER_256_TICKS = 2 , INDUSTRY_TRIGGER_CARGO_DELIVERY = 4 }
 When should the industry(tile) be triggered for random bits? More...
 
enum  IndustryAvailabilityCallType { IACT_MAPGENERATION , IACT_RANDOMCREATION , IACT_USERCREATION , IACT_PROSPECTCREATION }
 From where has callback CBID_INDUSTRY_PROBABILITY been called. More...
 

Functions

uint16_t GetIndustryCallback (CallbackID callback, uint32_t param1, uint32_t param2, Industry *industry, IndustryType type, TileIndex tile)
 Perform an industry callback. More...
 
uint32_t GetIndustryIDAtOffset (TileIndex new_tile, const Industry *i, uint32_t cur_grfid)
 Make an analysis of a tile and check for its belonging to the same industry, and/or the same grf file. More...
 
void IndustryProductionCallback (Industry *ind, int reason)
 Get the industry production callback and apply it to the industry. More...
 
CommandCost CheckIfCallBackAllowsCreation (TileIndex tile, IndustryType type, size_t layout, uint32_t seed, uint16_t initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
 Check that the industry callback allows creation of the industry. More...
 
uint32_t GetIndustryProbabilityCallback (IndustryType type, IndustryAvailabilityCallType creation_type, uint32_t default_prob)
 Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built. More...
 
bool IndustryTemporarilyRefusesCargo (Industry *ind, CargoID cargo_type)
 Check whether an industry temporarily refuses to accept a certain cargo. More...
 
IndustryType MapNewGRFIndustryType (IndustryType grf_type, uint32_t grf_id)
 Map the GRF local type to an industry type. More...
 
uint32_t GetNearbyIndustryTileInformation (uint8_t parameter, TileIndex tile, IndustryID index, bool signed_offsets, bool grf_version8)
 Based on newhouses equivalent, but adapted for newindustries. More...
 

Detailed Description

Functions for NewGRF industries.

Definition in file newgrf_industries.h.

Enumeration Type Documentation

◆ IndustryAvailabilityCallType

From where has callback CBID_INDUSTRY_PROBABILITY been called.

Enumerator
IACT_MAPGENERATION 

during random map generation

IACT_RANDOMCREATION 

during creation of random ingame industry

IACT_USERCREATION 

from the Fund/build window

IACT_PROSPECTCREATION 

from the Fund/build using prospecting

Definition at line 81 of file newgrf_industries.h.

◆ IndustryTrigger

When should the industry(tile) be triggered for random bits?

Enumerator
INDUSTRY_TRIGGER_TILELOOP_PROCESS 

Triggered each tile loop.

INDUSTRY_TRIGGER_256_TICKS 

Triggered (whole industry) each 256 ticks.

INDUSTRY_TRIGGER_CARGO_DELIVERY 

Triggered on cargo delivery.

Definition at line 71 of file newgrf_industries.h.

Function Documentation

◆ CheckIfCallBackAllowsCreation()

CommandCost CheckIfCallBackAllowsCreation ( TileIndex  tile,
IndustryType  type,
size_t  layout,
uint32_t  seed,
uint16_t  initial_random_bits,
Owner  founder,
IndustryAvailabilityCallType  creation_type 
)

Check that the industry callback allows creation of the industry.

Parameters
tileTile to build the industry.
typeType of industry to build.
layoutLayout number.
seedSeed for the random generator.
initial_random_bitsThe random bits the industry is going to have after construction.
founderIndustry founder
creation_typeThe circumstances the industry is created under.
Returns
Succeeded or failed command.

Definition at line 534 of file newgrf_industries.cpp.

◆ GetIndustryCallback()

uint16_t GetIndustryCallback ( CallbackID  callback,
uint32_t  param1,
uint32_t  param2,
Industry industry,
IndustryType  type,
TileIndex  tile 
)

Perform an industry callback.

Parameters
callbackThe callback to perform.
param1The first parameter.
param2The second parameter.
industryThe industry to do the callback for.
typeThe type of industry to do the callback for.
tileThe tile associated with the callback.
Returns
The callback result.

Definition at line 517 of file newgrf_industries.cpp.

◆ GetIndustryIDAtOffset()

uint32_t GetIndustryIDAtOffset ( TileIndex  tile,
const Industry i,
uint32_t  cur_grfid 
)

Make an analysis of a tile and check for its belonging to the same industry, and/or the same grf file.

Parameters
tileTileIndex of the tile to query
iIndustry to which to compare the tile to
cur_grfidGRFID of the current callback chain
Returns
value encoded as per NFO specs

Definition at line 56 of file newgrf_industries.cpp.

References GetCleanIndustryGfx(), GetIndustryTileSpec(), IndustryTileSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, INVALID_INDUSTRYTILE, GRFFilePropsBase< Tcnt >::local_id, NEW_INDUSTRYTILEOFFSET, GRFFileProps::override, GRFFilePropsBase< Tcnt >::spritegroup, and Industry::TileBelongsToIndustry().

◆ GetIndustryProbabilityCallback()

uint32_t GetIndustryProbabilityCallback ( IndustryType  type,
IndustryAvailabilityCallType  creation_type,
uint32_t  default_prob 
)

Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built.

Parameters
typeIndustry type to check.
creation_typeReason to construct a new industry.
Returns
If the industry has no callback or allows building, true is returned. Otherwise, false is returned.

Definition at line 565 of file newgrf_industries.cpp.

References IndustrySpec::callback_mask, CBM_IND_PROBABILITY, GetIndustrySpec(), and HasBit().

◆ GetNearbyIndustryTileInformation()

uint32_t GetNearbyIndustryTileInformation ( uint8_t  parameter,
TileIndex  tile,
IndustryID  index,
bool  signed_offsets,
bool  grf_version8 
)

Based on newhouses equivalent, but adapted for newindustries.

Parameters
parameterfrom callback. It's in fact a pair of coordinates
tileTileIndex from which the callback was initiated
indexof the industry been queried for
signed_offsetsAre the x and y offset encoded in parameter signed?
grf_version8True, if we are dealing with a new NewGRF which uses GRF version >= 8.
Returns
a construction of bits obeying the newgrf format

Definition at line 34 of file newgrf_industrytiles.cpp.

References GetIndustryIndex(), GetNearbyTile(), GetNearbyTileInformation(), IsTileType(), and MP_INDUSTRY.

Referenced by IndustryTileScopeResolver::GetVariable().

◆ IndustryProductionCallback()

void IndustryProductionCallback ( Industry ind,
int  reason 
)

Get the industry production callback and apply it to the industry.

Parameters
indthe industry this callback has to be called for
reasonthe reason it is called (0 = incoming cargo, 1 = periodic tick callback)

Definition at line 598 of file newgrf_industries.cpp.

References IndustrySpec::behaviour, GetIndustrySpec(), INDUSTRYBEH_PRODCALLBACK_RANDOM, Industry::location, OrthogonalTileArea::tile, and Industry::type.

◆ IndustryTemporarilyRefusesCargo()

bool IndustryTemporarilyRefusesCargo ( Industry ind,
CargoID  cargo_type 
)

Check whether an industry temporarily refuses to accept a certain cargo.

Parameters
indThe industry to query.
cargo_typeThe cargo to get information about.
Precondition
cargo_type is in ind->accepts_cargo.
Returns
Whether the given industry refuses to accept this cargo type.

Definition at line 678 of file newgrf_industries.cpp.

References IndustrySpec::callback_mask, CBM_IND_REFUSE_CARGO, GetIndustrySpec(), HasBit(), Industry::IsCargoAccepted(), and Industry::type.

Referenced by CanCargoServiceIndustry(), and DeliverGoodsToIndustry().

◆ MapNewGRFIndustryType()

IndustryType MapNewGRFIndustryType ( IndustryType  grf_type,
uint32_t  grf_id 
)

Map the GRF local type to an industry type.

Parameters
grf_typeThe GRF local type.
grf_idThe GRF of the local type.
Returns
The industry type in the global scope.

Definition at line 40 of file newgrf_industries.cpp.

Referenced by GetCountAndDistanceOfClosestInstance().