OpenTTD Source: src/newgrf_industries.cpp File Reference

OpenTTD Source 12.2

Functions | Variables
newgrf_industries.cpp File Reference
`#include "stdafx.h"`
`#include "debug.h"`
`#include "industry.h"`
`#include "newgrf_industries.h"`
`#include "newgrf_town.h"`
`#include "newgrf_cargo.h"`
`#include "window_func.h"`
`#include "town.h"`
`#include "company_base.h"`
`#include "error.h"`
`#include "strings_func.h"`
`#include "core/random_func.hpp"`
`#include "table/strings.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Functions
IndustryType | MapNewGRFIndustryType (IndustryType grf_type, uint32 grf_id)
| Map the GRF local type to an industry type. More...
uint32 | GetIndustryIDAtOffset (TileIndex tile, const Industry *i, uint32 cur_grfid)
| Make an analysis of a tile and check for its belonging to the same industry, and/or the same grf file. More...
static uint32 | GetClosestIndustry (TileIndex tile, IndustryType type, const Industry *current)
static uint32 | GetCountAndDistanceOfClosestInstance (byte param_setID, byte layout_filter, bool town_filter, const Industry *current)
| Implementation of both var 67 and 68 since the mechanism is almost the same, it is easier to regroup them on the same function. More...
static const GRFFile * | GetGrffile (IndustryType type)
| Get the grf file associated with the given industry type. More...
uint16 | GetIndustryCallback (CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile)
| Perform an industry callback. More...
CommandCost | CheckIfCallBackAllowsCreation (TileIndex tile, IndustryType type, size_t layout, uint32 seed, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
| Check that the industry callback allows creation of the industry. More...
uint32 | GetIndustryProbabilityCallback (IndustryType type, IndustryAvailabilityCallType creation_type, uint32 default_prob)
| Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built. More...
static int32 | DerefIndProd (int field, bool use_register)
void | IndustryProductionCallback (Industry *ind, int reason)
| Get the industry production callback and apply it to the industry. More...
bool | IndustryTemporarilyRefusesCargo (Industry *ind, CargoID cargo_type)
| Check whether an industry temporarily refuses to accept a certain cargo. More...

## Variables
IndustryOverrideManager | _industry_mngr (NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE)
IndustryTileOverrideManager | _industile_mngr (NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRYTILES, INVALID_INDUSTRYTILE)

## Detailed Description

Handling of NewGRF industries.

Definition in file newgrf_industries.cpp.

## Function Documentation

## ◆ CheckIfCallBackAllowsCreation()

CommandCost CheckIfCallBackAllowsCreation | ( | TileIndex | tile,
|  | IndustryType | type,
|  | size_t | layout,
|  | uint32 | seed,
|  | uint16 | initial_random_bits,
|  | Owner | founder,
|  | IndustryAvailabilityCallType | creation_type
| ) |  |

Check that the industry callback allows creation of the industry.

Parameters

  tile | Tile to build the industry.
  type | Type of industry to build.
  layout | Layout number.
  seed | Seed for the random generator.
  initial_random_bits | The random bits the industry is going to have after construction.
  founder | Industry founder
  creation_type | The circumstances the industry is created under.

Returns
  Succeeded or failed command.

Definition at line 538 of file newgrf_industries.cpp.

References GetIndustrySpec(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index.

## ◆ GetCountAndDistanceOfClosestInstance()

static uint32 GetCountAndDistanceOfClosestInstance | ( | byte | param_setID,
|  | byte | layout_filter,
|  | bool | town_filter,
|  | const Industry * | current
| ) |  |
| static

Implementation of both var 67 and 68 since the mechanism is almost the same, it is easier to regroup them on the same function.

Parameters

  param_setID | parameter given to the callback, which is the set id, or the local id, in our terminology
  layout_filter | on what layout do we filter?
  town_filter | Do we filter on the same town as the current industry?
  current | Industry for which the inquiry is made

Returns
  the formatted answer to the callback : rr(reserved) cc(count) dddd(manhattan distance of closest sister)

< Get the GRFID of the definition to look for in register 100h

Definition at line 113 of file newgrf_industries.cpp.

References GetRegister().

## ◆ GetGrffile()

static const GRFFile* GetGrffile | ( | IndustryType | type | ) |
| static

Get the grf file associated with the given industry type.

Parameters

  type | Industry type to query.

Returns
  The associated GRF file, if any.

Definition at line 450 of file newgrf_industries.cpp.

References GetIndustrySpec(), IndustrySpec::grf_prop, and GRFFilePropsBase< Tcnt >::grffile.

## ◆ GetIndustryCallback()

uint16 GetIndustryCallback | ( | CallbackID | callback,
|  | uint32 | param1,
|  | uint32 | param2,
|  | Industry * | industry,
|  | IndustryType | type,
|  | TileIndex | tile
| ) |  |

Perform an industry callback.

Parameters

  callback | The callback to perform.
  param1 | The first parameter.
  param2 | The second parameter.
  industry | The industry to do the callback for.
  type | The type of industry to do the callback for.
  tile | The tile associated with the callback.

Returns
  The callback result.

Definition at line 521 of file newgrf_industries.cpp.

Referenced by ChangeIndustryProduction(), GetCargoSuffix(), GetIndustryProbabilityCallback(), and IndustryTemporarilyRefusesCargo().

## ◆ GetIndustryIDAtOffset()

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

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
  cur_grfid | GRFID of the current callback chain

Returns
  value encoded as per NFO specs

Definition at line 55 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 GetIndustryProbabilityCallback | ( | IndustryType | type,
|  | IndustryAvailabilityCallType | creation_type,
|  | uint32 | default_prob
| ) |  |

Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built.

Parameters

  type | Industry type to check.
  creation_type | Reason 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 569 of file newgrf_industries.cpp.

References CALLBACK_FAILED, IndustrySpec::callback_mask, CBID_INDUSTRY_PROBABILITY, CBM_IND_PROBABILITY, ErrorUnknownCallbackResult(), GetIndustryCallback(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), and INVALID_TILE.

Referenced by GetIndustryGamePlayProbability().

## ◆ IndustryProductionCallback()

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 602 of file newgrf_industries.cpp.

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

Referenced by TriggerIndustryProduction().

## ◆ IndustryTemporarilyRefusesCargo()

bool IndustryTemporarilyRefusesCargo | ( | Industry * | ind,
|  | CargoID | cargo_type
| ) |  |

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

Parameters

  ind | The industry to query.
  cargo_type | The 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 680 of file newgrf_industries.cpp.

References Industry::accepts_cargo, CALLBACK_FAILED, IndustrySpec::callback_mask, GRFFile::cargo_map, CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO, ConvertBooleanCallback(), endof, GetIndustryCallback(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), Industry::location, OrthogonalTileArea::tile, and Industry::type.

Referenced by CanCargoServiceIndustry(), and DeliverGoodsToIndustry().

## ◆ MapNewGRFIndustryType()

IndustryType MapNewGRFIndustryType | ( | IndustryType | grf_type,
|  | uint32 | grf_id
| ) |  |

Map the GRF local type to an industry type.

Parameters

  grf_type | The GRF local type.
  grf_id | The GRF of the local type.

Returns
  The industry type in the global scope.

Definition at line 39 of file newgrf_industries.cpp.