Enumerations | Functions

newgrf_industries.h File Reference

Functions for NewGRF industries. More...

#include "command_type.h"
#include "company_type.h"
#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, IACT_PROSPECTCREATION }
 

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)
 Perform an industry callback.
uint32 GetIndustryIDAtOffset (TileIndex new_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.
void IndustryProductionCallback (Industry *ind, int reason)
 Get the industry production callback and apply it to the industry.
CommandCost CheckIfCallBackAllowsCreation (TileIndex tile, IndustryType type, uint layout, uint32 seed, uint16 initial_random_bits, Owner founder, IndustryAvailabilityCallType creation_type)
 Check that the industry callback allows creation of the industry.
bool CheckIfCallBackAllowsAvailability (IndustryType type, IndustryAvailabilityCallType creation_type)
 Check with callback CBM_IND_AVAILABLE whether the industry can be built.
bool IndustryTemporarilyRefusesCargo (Industry *ind, CargoID cargo_type)
 Check whether an industry temporarily refuses to accept a certain cargo.
IndustryType MapNewGRFIndustryType (IndustryType grf_type, uint32 grf_id)
 Map the GRF local type to an industry type.
uint32 GetNearbyIndustryTileInformation (byte parameter, TileIndex tile, IndustryID index, bool signed_offsets=true)
 Based on newhouses equivalent, but adapted for newindustries.

Detailed Description

Functions for NewGRF industries.

Definition in file newgrf_industries.h.


Enumeration Type Documentation

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

IACT_PROSPECTCREATION 

from the Fund/build using prospecting

Definition at line 30 of file newgrf_industries.h.

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


Function Documentation

bool CheckIfCallBackAllowsAvailability ( IndustryType  type,
IndustryAvailabilityCallType  creation_type 
)

Check with callback CBM_IND_AVAILABLE 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 541 of file newgrf_industries.cpp.

References CALLBACK_FAILED, IndustrySpec::callback_mask, CBID_INDUSTRY_AVAILABLE, CBM_IND_AVAILABLE, GetIndustryCallback(), GetIndustrySpec(), HasBit(), and INVALID_TILE.

Referenced by AIIndustryType::CanBuildIndustry(), AIIndustryType::CanProspectIndustry(), CmdBuildIndustry(), GetIndustryGamePlayProbability(), GetScaledIndustryGenerationProbability(), and BuildIndustryWindow::OnTick().

CommandCost CheckIfCallBackAllowsCreation ( TileIndex  tile,
IndustryType  type,
uint  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 490 of file newgrf_industries.cpp.

References CALLBACK_FAILED, ClosestTownFromTile(), Industry::founder, GetGRFStringID(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Industry::location, PrepareTextRefStackUsage(), Industry::random, SpriteGroup::Resolve(), return_cmd_error, Industry::selected_layout, TileArea::tile, Industry::town, Industry::type, and TileArea::w.

Referenced by CreateNewIndustryHelper().

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

References CALLBACK_FAILED, GetIndustrySpec(), and SpriteGroup::Resolve().

Referenced by ChangeIndustryProduction(), CheckIfCallBackAllowsAvailability(), DoCreateNewIndustry(), IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), GetCargoSuffix(), and IndustryTemporarilyRefusesCargo().

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

References GetCleanIndustryGfx(), GetIndustryIndex(), GetIndustryTileSpec(), IndustryTileSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_INDUSTRYTILE, IsTileType(), GRFFilePropsBase< Tcnt >::local_id, MP_INDUSTRY, NEW_INDUSTRYTILEOFFSET, GRFFileProps::override, and GRFFilePropsBase< Tcnt >::spritegroup.

Referenced by IndustryGetVariable().

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

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?
Returns:
a construction of bits obeying the newgrf format

Definition at line 37 of file newgrf_industrytiles.cpp.

References GetIndustryIndex(), GetNearbyTile(), 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 173 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(), ClosestTownFromTile(), Livery::colour1, Livery::colour2, Industry::construction_date, Industry::construction_type, Industry::counter, DAYS_TILL_ORIGINAL_BASE_YEAR, DEBUG, DistanceManhattan(), DistanceSquare(), Industry::founder, GB(), GetAnimationFrame(), Industry::GetByTile(), GetClosestWaterDistance(), GetCountAndDistanceOfClosestInstance(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetIndustryIDAtOffset(), GetIndustryRandomBits(), GetIndustrySpec(), GetNearbyIndustryTileInformation(), GetNearbyTile(), GetRegister(), GetTownRadiusGroup(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, ResolverObject::grffile, TileArea::h, HasBit(), Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INDUSTRYBEH_BUILT_ONWATER, INDUSTRYBEH_PROD_MULTI_HNDLING, INVALID_INDUSTRYTILE, INVALID_TILE, CompanyProperties::is_ai, 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, MapNewGRFIndustryType(), min(), MP_INDUSTRY, ORIGINAL_BASE_YEAR, Industry::prod_level, Industry::produced_cargo, Industry::produced_cargo_waiting, Industry::production_rate, Industry::psa, Industry::random_colour, ResolverObject::scope, 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 
)
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 628 of file newgrf_industries.cpp.

References Industry::accepts_cargo, IndustrySpec::callback_mask, CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO, GetIndustryCallback(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), Industry::location, TileArea::tile, and Industry::type.

Referenced by CanCargoServiceIndustry(), DeliverGoodsToIndustry(), and AIIndustry::IsCargoAccepted().

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

References GB(), IndustryOverrideManager::GetID(), and HasBit().

Referenced by FinaliseIndustriesArray(), GetCountAndDistanceOfClosestInstance(), and IndustryGetVariable().