OpenTTD Source 20241224-master-gf74b0cf984
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_t GetNearbyIndustryTileInformation (uint8_t parameter, TileIndex tile, IndustryID index, bool signed_offsets, bool grf_version8)
 Based on newhouses equivalent, but adapted for newindustries.
 
uint32_t GetRelativePosition (TileIndex tile, TileIndex ind_tile)
 This is the position of the tile relative to the northernmost tile of the industry.
 
static const GRFFileGetIndTileGrffile (IndustryGfx gfx)
 Get the associated NewGRF file from the industry graphics.
 
static void IndustryDrawTileLayout (const TileInfo *ti, const TileLayoutSpriteGroup *group, uint8_t rnd_colour, uint8_t stage)
 
uint16_t GetIndustryTileCallback (CallbackID callback, uint32_t param1, uint32_t 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, size_t layout_index, uint16_t initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
 Check the slope of a tile of a new industry.
 
uint16_t GetSimpleIndustryCallback (CallbackID callback, uint32_t param1, uint32_t param2, const IndustryTileSpec *spec, Industry *ind, TileIndex tile, int)
 
void AnimateNewIndustryTile (TileIndex tile)
 
bool StartStopIndustryTileAnimation (TileIndex tile, IndustryAnimationTrigger iat, uint32_t random)
 
bool StartStopIndustryTileAnimation (const Industry *ind, IndustryAnimationTrigger iat)
 
static void DoTriggerIndustryTile (TileIndex tile, IndustryTileTrigger trigger, Industry *ind, uint32_t &reseed_industry)
 Trigger random triggers for an industry tile and reseed its random bits.
 
static void DoReseedIndustry (Industry *ind, uint32_t 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

◆ AnimateNewIndustryTile()

void AnimateNewIndustryTile ( TileIndex  tile)

Definition at line 268 of file newgrf_industrytiles.cpp.

◆ DoReseedIndustry()

static void DoReseedIndustry ( Industry ind,
uint32_t  reseed 
)
static

Reseeds the random bits of an industry.

Parameters
indIndustry.
reseedBits to reseed.

Definition at line 345 of file newgrf_industrytiles.cpp.

References Industry::random.

Referenced by TriggerIndustry(), and TriggerIndustryTile().

◆ DoTriggerIndustryTile()

static void DoTriggerIndustryTile ( TileIndex  tile,
IndustryTileTrigger  trigger,
Industry ind,
uint32_t &  reseed_industry 
)
static

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

Parameters
tileIndustry tile to trigger.
triggerTrigger to trigger.
indIndustry of the tile.
[in,out]reseed_industryCollects bits to reseed for the industry.

Definition at line 310 of file newgrf_industrytiles.cpp.

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

Referenced by TriggerIndustry(), and TriggerIndustryTile().

◆ DrawNewIndustryTile()

bool DrawNewIndustryTile ( TileInfo ti,
Industry i,
IndustryGfx  gfx,
const IndustryTileSpec inds 
)

Definition at line 190 of file newgrf_industrytiles.cpp.

◆ GetIndTileGrffile()

static const GRFFile * GetIndTileGrffile ( IndustryGfx  gfx)
static

Get the associated NewGRF file from the industry graphics.

Parameters
gfxGraphics to query.
Returns
Grf file associated with the graphics, if any.

Definition at line 123 of file newgrf_industrytiles.cpp.

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

◆ GetIndustryTileCallback()

uint16_t GetIndustryTileCallback ( CallbackID  callback,
uint32_t  param1,
uint32_t  param2,
IndustryGfx  gfx_id,
Industry industry,
TileIndex  tile 
)

Definition at line 181 of file newgrf_industrytiles.cpp.

◆ 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 IndustriesScopeResolver::GetVariable(), and IndustryTileScopeResolver::GetVariable().

◆ GetRelativePosition()

uint32_t 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
tileTileIndex of the tile to evaluate
ind_tilenorthernmost tile of the industry

Definition at line 53 of file newgrf_industrytiles.cpp.

References TileX(), and TileY().

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

◆ GetSimpleIndustryCallback()

uint16_t GetSimpleIndustryCallback ( CallbackID  callback,
uint32_t  param1,
uint32_t  param2,
const IndustryTileSpec spec,
Industry ind,
TileIndex  tile,
int   
)

Definition at line 254 of file newgrf_industrytiles.cpp.

◆ IndustryDrawTileLayout()

static void IndustryDrawTileLayout ( const TileInfo ti,
const TileLayoutSpriteGroup group,
uint8_t  rnd_colour,
uint8_t  stage 
)
static

Definition at line 158 of file newgrf_industrytiles.cpp.

◆ IsSlopeRefused()

bool IsSlopeRefused ( Slope  current,
Slope  refused 
)
extern

Definition at line 1449 of file industry_cmd.cpp.

◆ PerformIndustryTileSlopeCheck()

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.

Parameters
ind_base_tileBase tile of the industry.
ind_tileTile to check.
itsTile specification.
typeIndustry type.
gfxGfx of the tile.
layout_indexLayout.
initial_random_bitsRandom bits of industry after construction
founderIndustry founder
creation_typeThe circumstances the industry is created under.
Returns
Succeeded or failed command.

Definition at line 230 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, IndustryTileSpec::slopes_refused, OrthogonalTileArea::tile, Industry::type, and OrthogonalTileArea::w.

Referenced by CheckIfIndustryTileSlopes().

◆ StartStopIndustryTileAnimation() [1/2]

bool StartStopIndustryTileAnimation ( const Industry ind,
IndustryAnimationTrigger  iat 
)

Definition at line 286 of file newgrf_industrytiles.cpp.

◆ StartStopIndustryTileAnimation() [2/2]

bool StartStopIndustryTileAnimation ( TileIndex  tile,
IndustryAnimationTrigger  iat,
uint32_t  random 
)

Definition at line 276 of file newgrf_industrytiles.cpp.

◆ TriggerIndustry()

void TriggerIndustry ( Industry ind,
IndustryTileTrigger  trigger 
)

Trigger a random trigger for all industry tiles.

Parameters
indIndustry to trigger.
triggerTrigger to trigger.

Definition at line 372 of file newgrf_industrytiles.cpp.

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

Referenced by TriggerIndustryProduction().

◆ TriggerIndustryTile()

void TriggerIndustryTile ( TileIndex  tile,
IndustryTileTrigger  trigger 
)

Trigger a random trigger for a single industry tile.

Parameters
tileIndustry tile to trigger.
triggerTrigger to trigger.

Definition at line 359 of file newgrf_industrytiles.cpp.

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