OpenTTD: src/newgrf_industrytiles.cpp File Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- File List
- Globals

Data Structures | Functions
newgrf_industrytiles.cpp File Reference

NewGRF handling of industry tiles. More...

`#include "stdafx.h"`
`#include "debug.h"`
`#include "landscape.h"`
`#include "newgrf_industrytiles.h"`
`#include "newgrf_sound.h"`
`#include "industry.h"`
`#include "town.h"`
`#include "command_func.h"`
`#include "water.h"`
`#include "newgrf_animation_base.h"`
`#include "table/strings.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | IndustryAnimationBase
| Helper class for animation control. More...

## Functions
uint32 | GetNearbyIndustryTileInformation (byte parameter, TileIndex tile, IndustryID index, bool signed_offsets, bool grf_version8)
| Based on newhouses equivalent, but adapted for newindustries.
uint32 | GetRelativePosition (TileIndex tile, TileIndex ind_tile)
| This is the position of the tile relative to the northernmost tile of the industry.
static const GRFFile * | GetIndTileGrffile (IndustryGfx gfx)
| Get the associated NewGRF file from the industry graphics.
static void | IndustryDrawTileLayout (const TileInfo *ti, const TileLayoutSpriteGroup *group, byte rnd_colour, byte stage, IndustryGfx gfx)
uint16 | GetIndustryTileCallback (CallbackID callback, uint32 param1, uint32 param2, IndustryGfx gfx_id, Industry *industry, TileIndex tile)
bool | DrawNewIndustryTile (TileInfo *ti, Industry *i, IndustryGfx gfx, const IndustryTileSpec *inds)
bool | IsSlopeRefused (Slope current, Slope refused)
CommandCost | PerformIndustryTileSlopeCheck (TileIndex ind_base_tile, TileIndex ind_tile, const IndustryTileSpec *its, IndustryType type, IndustryGfx gfx, uint itspec_index, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
| Check the slope of a tile of a new industry.
uint16 | GetSimpleIndustryCallback (CallbackID callback, uint32 param1, uint32 param2, const IndustryTileSpec *spec, Industry *ind, TileIndex tile, int extra_data)
void | AnimateNewIndustryTile (TileIndex tile)
bool | StartStopIndustryTileAnimation (TileIndex tile, IndustryAnimationTrigger iat, uint32 random)
bool | StartStopIndustryTileAnimation (const Industry *ind, IndustryAnimationTrigger iat)
static void | DoTriggerIndustryTile (TileIndex tile, IndustryTileTrigger trigger, Industry *ind, uint32 &reseed_industry)
| Trigger random triggers for an industry tile and reseed its random bits.
static void | DoReseedIndustry (Industry *ind, uint32 reseed)
| Reseeds the random bits of an industry.
void | TriggerIndustryTile (TileIndex tile, IndustryTileTrigger trigger)
| Trigger a random trigger for a single industry tile.
void | TriggerIndustry (Industry *ind, IndustryTileTrigger trigger)
| Trigger a random trigger for all industry tiles.

## Detailed Description

NewGRF handling of industry tiles.

Definition in file newgrf_industrytiles.cpp.

## Function Documentation

static void DoReseedIndustry | ( | Industry * | ind,
|  | uint32 | reseed
| ) |  |
| static

Reseeds the random bits of an industry.

Parameters

  ind | Industry.
  reseed | Bits to reseed.

Definition at line 336 of file newgrf_industrytiles.cpp.

References Industry::random.

Referenced by TriggerIndustry(), and TriggerIndustryTile().

static void DoTriggerIndustryTile | ( | TileIndex | tile,
|  | IndustryTileTrigger | trigger,
|  | Industry * | ind,
|  | uint32 & | reseed_industry
| ) |  |
| static

Trigger random triggers for an industry tile and reseed its random bits.

Parameters

  | tile | Industry tile to trigger.
  | trigger | Trigger to trigger.
  | ind | Industry of the tile.
  [in,out] | reseed_industry | Collects bits to reseed for the industry.

Definition at line 301 of file newgrf_industrytiles.cpp.

References CBID_RANDOM_TRIGGER, GetIndustryGfx(), GetIndustryRandomBits(), GetIndustryTileSpec(), GetIndustryTriggers(), IndustryTileSpec::grf_prop, IsTileType(), IsValidTile(), MarkTileDirtyByTile(), MP_INDUSTRY, ResolverObject::reseed, SpriteGroup::Resolve(), SetIndustryRandomBits(), SetIndustryTriggers(), GRFFilePropsBase< Tcnt >::spritegroup, VSG_SCOPE_PARENT, and VSG_SCOPE_SELF.

Referenced by TriggerIndustry(), and TriggerIndustryTile().

static const GRFFile* GetIndTileGrffile | ( | IndustryGfx | gfx | ) |
| static

Get the associated NewGRF file from the industry graphics.

Parameters

  gfx | Graphics to query.

Returns
  Grf file associated with the graphics, if any.

Definition at line 125 of file newgrf_industrytiles.cpp.

References GetIndustryTileSpec(), IndustryTileSpec::grf_prop, and GRFFilePropsBase< Tcnt >::grffile.

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

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
  signed_offsets | Are the x and y offset encoded in parameter signed?
  grf_version8 | True, 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 36 of file newgrf_industrytiles.cpp.

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

Referenced by IndustryTileScopeResolver::GetVariable(), and IndustriesScopeResolver::GetVariable().

uint32 GetRelativePosition | ( | TileIndex | tile,
|  | TileIndex | ind_tile
| ) |  |

This is the position of the tile relative to the northernmost tile of the industry.

Format: 00yxYYXX Variable Content x the x offset from the northernmost tile XX same, but stored in a byte instead of a nibble y the y offset from the northernmost tile YY same, but stored in a byte instead of a nibble

Parameters

  tile | TileIndex of the tile to evaluate
  ind_tile | northernmost tile of the industry

Definition at line 55 of file newgrf_industrytiles.cpp.

References TileX(), and TileY().

Referenced by IndustryTileScopeResolver::GetVariable(), and AirportTileScopeResolver::GetVariable().

CommandCost PerformIndustryTileSlopeCheck | ( | TileIndex | ind_base_tile,
|  | TileIndex | ind_tile,
|  | const IndustryTileSpec * | its,
|  | IndustryType | type,
|  | IndustryGfx | gfx,
|  | uint | itspec_index,
|  | uint16 | initial_random_bits,
|  | Owner | founder,
|  | IndustryAvailabilityCallType | creation_type
| ) |  |

Check the slope of a tile of a new industry.

Parameters

  ind_base_tile | Base tile of the industry.
  ind_tile | Tile to check.
  its | Tile specification.
  type | Industry type.
  gfx | Gfx of the tile.
  itspec_index | Layout.
  initial_random_bits | Random bits of industry after construction
  founder | Industry founder
  creation_type | The circumstances the industry is created under.

Returns
  Succeeded or failed command.

Definition at line 221 of file newgrf_industrytiles.cpp.

References CALLBACK_FAILED, CBID_INDTILE_SHAPE_CHECK, Industry::founder, GetErrorMessageFromLocationCallbackResult(), GetTileSlope(), IndustryTileSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Industry::location, Industry::random, return_cmd_error, IndustryTileSpec::slopes_refused, OrthogonalTileArea::tile, Industry::type, and OrthogonalTileArea::w.

Referenced by CheckIfIndustryTilesAreFree().

void TriggerIndustry | ( | Industry * | ind,
|  | IndustryTileTrigger | trigger
| ) |  |

Trigger a random trigger for all industry tiles.

Parameters

  ind | Industry to trigger.
  trigger | Trigger to trigger.

Definition at line 363 of file newgrf_industrytiles.cpp.

References DoReseedIndustry(), DoTriggerIndustryTile(), Industry::location, TILE_AREA_LOOP, and Industry::TileBelongsToIndustry().

Referenced by TriggerIndustryProduction().

void TriggerIndustryTile | ( | TileIndex | tile,
|  | IndustryTileTrigger | trigger
| ) |  |

Trigger a random trigger for a single industry tile.

Parameters

  tile | Industry tile to trigger.
  trigger | Trigger to trigger.

Definition at line 350 of file newgrf_industrytiles.cpp.

References DoReseedIndustry(), DoTriggerIndustryTile(), and Industry::GetByTile().