# newgrf_industries.h File Reference

Functions for NewGRF industries. More...

`#include "newgrf_spritegroup.h"`

Go to the source code of this file.

## 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 }
| From where is callback CBID_INDUSTRY_AVAILABLE been called. More...
## Functions
uint32 | IndustryGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available)
| This function implements the industries variables that newGRF defines.
uint16 | GetIndustryCallback (CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile)
uint32 | GetIndustryIDAtOffset (TileIndex new_tile, const Industry *i)
| Make an analysis of a tile and check for its belonging to the same industry, and/or the same grf file.
void | IndustryProductionCallback (Industry *ind, int reason)
| Get the industry production callback and apply it to the industry.
bool | CheckIfCallBackAllowsCreation (TileIndex tile, IndustryType type, uint itspec_index, uint32 seed)
bool | CheckIfCallBackAllowsAvailability (IndustryType type, IndustryAvailabilityCallType creation_type)
IndustryType | MapNewGRFIndustryType (IndustryType grf_type, uint32 grf_id)
uint32 | GetNearbyIndustryTileInformation (byte parameter, TileIndex tile, IndustryID index)
| Based on newhouses equivalent, but adapted for newindustries.

## Detailed Description

Functions for NewGRF industries.

Definition in file newgrf_industries.h.

## Enumeration Type Documentation

enum IndustryAvailabilityCallType

From where is callback CBID_INDUSTRY_AVAILABLE been called.

Enumerator:

  IACT_MAPGENERATION | during random map generation
  IACT_RANDOMCREATION | during creation of random ingame industry
  IACT_USERCREATION | from the Fund/build window

Definition at line 28 of file newgrf_industries.h.

enum 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 18 of file newgrf_industries.h.

## Function Documentation

uint32 GetIndustryIDAtOffset | ( | TileIndex | tile,
|  | const Industry * | i |
| ) |  |  |

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

Parameters:

  | tile | TileIndex of the tile to query
  | i | Industry to which to compare the tile to

Returns:
  value encoded as per NFO specs

Definition at line 51 of file newgrf_industries.cpp.

References GetCleanIndustryGfx(), GetIndustryIndex(), GetIndustrySpec(), GetIndustryTileSpec(), IndustrySpec::grf_prop, IndustryTileSpec::grf_prop, GRFFileProps::grffile, GRFFile::grfid, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_INDUSTRYTILE, IsTileType(), GRFFileProps::local_id, MP_INDUSTRY, NEW_INDUSTRYOFFSET, GRFFileProps::override, GRFFileProps::spritegroup, GRFFileProps::subst_id, and Industry::type.

Referenced by IndustryGetVariable().

uint32 GetNearbyIndustryTileInformation | ( | byte | parameter,
|  | TileIndex | tile,
|  | IndustryID | index |
| ) |  |  |

Based on newhouses equivalent, but adapted for newindustries.

Parameters:

  | parameter | from callback. It's in fact a pair of coordinates
  | tile | TileIndex from which the callback was initiated
  | index | of the industry been queried for

Returns:
  a construction of bits obeying the newgrf format

Definition at line 40 of file newgrf_industrytiles.cpp.

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

Referenced by IndustryGetVariable().

uint32 IndustryGetVariable | ( | const ResolverObject * | object,
|  | byte | variable,
|  | byte | parameter,
|  | bool * | available |
| ) |  |  |

This function implements the industries variables that newGRF defines.

Parameters:

  | object | the object that we want to query
  | variable | that is queried
  | parameter | unused
  | available | will return false if ever the variable asked for does not exist

Returns:
  the value stored in the corresponding variable

Definition at line 158 of file newgrf_industries.cpp.

References Industry::accepts_cargo, IndustrySpec::behaviour, IndustrySpec::callback_mask, CBM_IND_PRODUCTION_256_TICKS, CBM_IND_PRODUCTION_CARGO_ARRIVAL, Clamp(), Industry::construction_date, Industry::construction_type, Industry::counter, DAYS_TILL_ORIGINAL_BASE_YEAR, DistanceManhattan(), DistanceSquare(), Industry::founder, GB(), Industry::GetByTile(), GetClosestWaterDistance(), GetCountAndDistanceOfClosestInstance(), GetIndustryAnimationState(), GetIndustryIDAtOffset(), GetIndustryRandomBits(), GetIndustrySpec(), GetNearbyIndustryTileInformation(), GetRegister(), GetTownRadiusGroup(), IndustrySpec::grf_prop, GRFFileProps::grffile, GRFFile::grfid, TileArea::h, HasBit(), Industry::incoming_cargo_waiting, INDUSTRYBEH_BUILT_ONWATER, INDUSTRYBEH_PROD_MULTI_HNDLING, INVALID_INDUSTRYTILE, INVALID_TILE, IsTileType(), Industry::last_cargo_accepted_at, Industry::last_month_pct_transported, Industry::last_month_production, Industry::last_month_transported, Industry::last_prod_year, Industry::location, min(), MP_INDUSTRY, ORIGINAL_BASE_YEAR, Industry::prod_level, Industry::produced_cargo, Industry::produced_cargo_waiting, Industry::production_rate, Industry::psa, Industry::random_colour, Industry::selected_layout, Industry::this_month_production, Industry::this_month_transported, TileArea::tile, Industry::town, TownGetVariable(), Industry::type, TileArea::w, and Industry::was_cargo_delivered.

void IndustryProductionCallback | ( | Industry * | ind,
|  | int | reason |
| ) |  |  |

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

Parameters:

  | ind | the industry this callback has to be called for
  | reason | the reason it is called (0 = incoming cargo, 1 = periodic tick callback)

Definition at line 515 of file newgrf_industries.cpp.

References IndustrySpec::behaviour, Clamp(), GRFFile::filename, GetIndustrySpec(), IndustrySpec::grf_prop, GRFFileProps::grffile, Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INDUSTRYBEH_PROD_MULTI_HNDLING, INDUSTRYBEH_PRODCALLBACK_RANDOM, Industry::location, max(), IndustrySpec::name, Industry::prod_level, Industry::produced_cargo_waiting, SB(), SetDParam(), SetDParamStr(), SetWindowDirty(), ShowErrorMessage(), GRFFileProps::spritegroup, TileArea::tile, and Industry::type.

Referenced by TriggerIndustryProduction().