OpenTTD
|
Handling of NewGRF industries. More...
#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. | |
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. | |
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. | |
static const GRFFile * | GetGrffile (IndustryType type) |
Get the grf file associated with the given industry type. | |
uint16 | GetIndustryCallback (CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile) |
Perform an industry callback. | |
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. | |
uint32 | GetIndustryProbabilityCallback (IndustryType type, IndustryAvailabilityCallType creation_type, uint32 default_prob) |
Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built. | |
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. | |
bool | IndustryTemporarilyRefusesCargo (Industry *ind, CargoID cargo_type) |
Check whether an industry temporarily refuses to accept a certain cargo. |
Variables | |
IndustryOverrideManager | _industry_mngr (NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE) |
IndustryTileOverrideManager | _industile_mngr (NEW_INDUSTRYTILEOFFSET, NUM_INDUSTRYTILES, INVALID_INDUSTRYTILE) |
Handling of NewGRF industries.
Definition in file newgrf_industries.cpp.
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.
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. |
Definition at line 510 of file newgrf_industries.cpp.
References CALLBACK_FAILED, CBID_INDUSTRY_LOCATION, ClosestTownFromTile(), Industry::founder, GetErrorMessageFromLocationCallbackResult(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Industry::location, Industry::psa, Industry::random, Industry::selected_layout, OrthogonalTileArea::tile, Industry::town, Industry::type, and OrthogonalTileArea::w.
Referenced by CreateNewIndustryHelper().
|
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.
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 |
< Get the GRFID of the definition to look for in register 100h
Definition at line 116 of file newgrf_industries.cpp.
References DistanceManhattan(), GB(), GetIndustrySpec(), Industry::GetIndustryTypeCount(), GetRegister(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Industry::location, MapNewGRFIndustryType(), min(), NUM_INDUSTRYTYPES, Industry::selected_layout, SetBit(), OrthogonalTileArea::tile, Industry::town, and Industry::type.
Referenced by IndustriesScopeResolver::GetVariable().
|
static |
Get the grf file associated with the given industry type.
type | Industry type to query. |
Definition at line 415 of file newgrf_industries.cpp.
References GetIndustrySpec(), IndustrySpec::grf_prop, and GRFFilePropsBase< Tcnt >::grffile.
uint16 GetIndustryCallback | ( | CallbackID | callback, |
uint32 | param1, | ||
uint32 | param2, | ||
Industry * | industry, | ||
IndustryType | type, | ||
TileIndex | tile | ||
) |
Perform an industry callback.
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. |
Definition at line 493 of file newgrf_industries.cpp.
Referenced by ChangeIndustryProduction(), DoCreateNewIndustry(), IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), GetCargoSuffix(), GetIndustryProbabilityCallback(), and IndustryTemporarilyRefusesCargo().
Make an analysis of a tile and check for its belonging to the same industry, and/or the same grf file.
tile | TileIndex of the tile to query |
i | Industry to which to compare the tile to |
cur_grfid | GRFID of the current callback chain |
Definition at line 57 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().
Referenced by IndustriesScopeResolver::GetVariable(), and IndustryTileScopeResolver::GetVariable().
uint32 GetIndustryProbabilityCallback | ( | IndustryType | type, |
IndustryAvailabilityCallType | creation_type, | ||
uint32 | default_prob | ||
) |
Check with callback CBID_INDUSTRY_PROBABILITY whether the industry can be built.
type | Industry type to check. |
creation_type | Reason to construct a new industry. |
true
is returned. Otherwise, false
is returned. Definition at line 541 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 CmdBuildIndustry(), GetIndustryGamePlayProbability(), GetScaledIndustryGenerationProbability(), and BuildIndustryWindow::OnTick().
void IndustryProductionCallback | ( | Industry * | ind, |
int | reason | ||
) |
Get the industry production callback and apply it to the industry.
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 574 of file newgrf_industries.cpp.
References IndustrySpec::behaviour, Clamp(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INDUSTRYBEH_PROD_MULTI_HNDLING, INDUSTRYBEH_PRODCALLBACK_RANDOM, Industry::location, max(), IndustrySpec::name, Industry::prod_level, Industry::produced_cargo_waiting, SpriteGroup::Resolve(), SB(), SetDParam(), SetDParamStr(), SetWindowDirty(), ShowErrorMessage(), OrthogonalTileArea::tile, Industry::type, WC_INDUSTRY_VIEW, and WL_WARNING.
Referenced by TriggerIndustryProduction().
Check whether an industry temporarily refuses to accept a certain cargo.
ind | The industry to query. |
cargo_type | The cargo to get information about. |
Definition at line 626 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(), GetIndustryCallback(), GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), Industry::location, OrthogonalTileArea::tile, and Industry::type.
Referenced by CanCargoServiceIndustry(), and DeliverGoodsToIndustry().
IndustryType MapNewGRFIndustryType | ( | IndustryType | grf_type, |
uint32 | grf_id | ||
) |
Map the GRF local type to an industry type.
grf_type | The GRF local type. |
grf_id | The GRF of the local type. |
Definition at line 41 of file newgrf_industries.cpp.
References GB(), IndustryOverrideManager::GetID(), and HasBit().
Referenced by FinaliseIndustriesArray(), GetCountAndDistanceOfClosestInstance(), and IndustriesScopeResolver::GetVariable().