Handling of NewGRF industries. More...
#include "stdafx.h"#include "debug.h"#include "industry.h"#include "newgrf.h"#include "newgrf_industries.h"#include "newgrf_text.h"#include "newgrf_town.h"#include "newgrf_cargo.h"#include "window_func.h"#include "town.h"#include "company_base.h"#include "command_func.h"#include "gui.h"#include "strings_func.h"#include "core/random_func.hpp"#include "table/strings.h"Go to the source code of this file.
Functions | |
| IndustryType | MapNewGRFIndustryType (IndustryType grf_type, uint32 grf_id) |
| 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. | |
| uint32 | IndustryGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available) |
| This function implements the industries variables that newGRF defines. | |
| static const SpriteGroup * | IndustryResolveReal (const ResolverObject *object, const RealSpriteGroup *group) |
| static uint32 | IndustryGetRandomBits (const ResolverObject *object) |
| static uint32 | IndustryGetTriggers (const ResolverObject *object) |
| static void | IndustrySetTriggers (const ResolverObject *object, int triggers) |
| static void | NewIndustryResolver (ResolverObject *res, TileIndex tile, Industry *indus, IndustryType type) |
| uint16 | GetIndustryCallback (CallbackID callback, uint32 param1, uint32 param2, Industry *industry, IndustryType type, TileIndex tile) |
| uint32 | IndustryLocationGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available) |
| 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. | |
| 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. | |
| void | GetIndustryResolver (ResolverObject *ro, uint index) |
| Resolve a industry's spec and such so we can get a variable. | |
| bool | IndustryTemporarilyRefusesCargo (Industry *ind, CargoID cargo_type) |
| Check whether an industry temporarily refuses to accept a certain cargo. | |
Variables | |
| static uint32 | _industry_creation_random_bits |
| 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.
| bool CheckIfCallBackAllowsAvailability | ( | IndustryType | type, | |
| IndustryAvailabilityCallType | creation_type | |||
| ) |
Check with callback CBM_IND_AVAILABLE 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 522 of file newgrf_industries.cpp.
References CALLBACK_FAILED, IndustrySpec::callback_mask, CBID_INDUSTRY_AVAILABLE, CBM_IND_AVAILABLE, 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.
| 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 471 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, Tcache, Tzero >::PoolItem< Tpool >::index, Industry::location, Industry::random, SpriteGroup::Resolve(), Industry::selected_layout, TileArea::tile, Industry::town, Industry::type, CommandCost::UseTextRefStack(), and TileArea::w.
Referenced by CreateNewIndustryHelper().
| 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.
| 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 113 of file newgrf_industries.cpp.
References DistanceManhattan(), GB(), GetIndustrySpec(), Industry::GetIndustryTypeCount(), GetRegister(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Industry::location, min(), NUM_INDUSTRYTYPES, Industry::selected_layout, SetBit(), TileArea::tile, Industry::town, and Industry::type.
Referenced by IndustryGetVariable().
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 54 of file newgrf_industries.cpp.
References GetCleanIndustryGfx(), GetIndustryIndex(), GetIndustryTileSpec(), IndustryTileSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, 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().
| void GetIndustryResolver | ( | ResolverObject * | ro, | |
| uint | index | |||
| ) |
Resolve a industry's spec and such so we can get a variable.
| ro | The resolver object to fill. | |
| index | The industry ID to get the data from. |
Definition at line 596 of file newgrf_industries.cpp.
References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_industry_pool >::Get(), Industry::location, TileArea::tile, and Industry::type.
| uint32 IndustryGetVariable | ( | const ResolverObject * | object, | |
| byte | variable, | |||
| byte | parameter, | |||
| bool * | available | |||
| ) |
This function implements the industries variables that newGRF defines.
| 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 |
Definition at line 167 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, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetIndustryIDAtOffset(), GetIndustryRandomBits(), GetIndustrySpec(), GetNearbyIndustryTileInformation(), GetRegister(), GetTownRadiusGroup(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, ResolverObject::grffile, TileArea::h, HasBit(), Industry::incoming_cargo_waiting, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, 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, 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, VSG_SCOPE_PARENT, TileArea::w, and Industry::was_cargo_delivered.
| 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 545 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, 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(), GRFFilePropsBase< Tcnt >::spritegroup, TileArea::tile, Industry::type, 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 609 of file newgrf_industries.cpp.
References Industry::accepts_cargo, IndustrySpec::callback_mask, CBID_INDUSTRY_REFUSE_CARGO, CBM_IND_REFUSE_CARGO, GetIndustrySpec(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), Industry::location, TileArea::tile, and Industry::type.
Referenced by CanCargoServiceIndustry(), DeliverGoodsToIndustry(), and AIIndustry::IsCargoAccepted().
1.7.1