|
OpenTTD Source
14.0-beta1
|
Go to the documentation of this file.
62 static const int THIS_MONTH = 0;
63 static const int LAST_MONTH = 1;
73 uint8_t PctTransported()
const
75 if (this->production == 0)
return 0;
76 return ClampTo<uint8_t>(this->transported * 256 / this->production);
93 using ProducedCargoArray = std::array<ProducedCargo, INDUSTRY_NUM_OUTPUTS>;
94 using AcceptedCargoArray = std::array<AcceptedCargo, INDUSTRY_NUM_INPUTS>;
150 return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](
const auto &p) {
return p.cargo == cargo; });
161 return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](
const auto &p) {
return p.cargo == cargo; });
172 return std::find_if(std::begin(this->accepted), std::end(this->accepted), [&cargo](
const auto &a) {
return a.cargo == cargo; });
179 bool IsCargoAccepted()
const {
return std::any_of(std::begin(this->accepted), std::end(this->accepted), [](
const auto &a) {
return IsValidCargoID(a.cargo); }); }
185 bool IsCargoProduced()
const {
return std::any_of(std::begin(this->produced), std::end(this->produced), [](
const auto &p) {
return IsValidCargoID(p.cargo); }); }
192 bool IsCargoAccepted(
CargoID cargo)
const {
return std::any_of(std::begin(this->accepted), std::end(this->accepted), [&cargo](
const auto &a) {
return a.cargo == cargo; }); }
199 bool IsCargoProduced(
CargoID cargo)
const {
return std::any_of(std::begin(this->produced), std::end(this->produced), [&cargo](
const auto &p) {
return p.cargo == cargo; }); }
254 inline const std::string &GetCachedName()
const
256 if (this->cached_name.empty()) this->FillCachedName();
261 void FillCachedName()
const;
267 void ClearAllIndustryCachedNames();
269 void PlantRandomFarmField(
const Industry *i);
309 IDIWD_PRODUCTION_CHANGE,
bool IsCargoAccepted(CargoID cargo) const
Test if this industry accepts a specific cargo.
uint16_t waiting
Amount of cargo waiting to processed.
@ PRODLEVEL_MINIMUM
below this level, the industry is set to be closing
Owner owner
owner of the industry. Which SHOULD always be (imho) OWNER_NONE
static const IndustryType NUM_INDUSTRYTYPES
total number of industry types, new and old; limited to 240 because we need some special ids like INV...
uint32_t wanted_inds
Number of wanted industries (bits 31-16), and a fraction (bits 15-0).
static Titem * Get(size_t index)
Returns Titem with given index.
uint16_t transported
Total transported.
PartOfSubsidy part_of_subsidy
NOSAVE: is this industry a source/destination of a subsidy?
@ INDCTL_NONE
No flags in effect.
static uint16_t counts[NUM_INDUSTRYTYPES]
Number of industries per type ingame.
@ INDCTL_NO_CLOSURE
Industry can not close regardless of production level or time since last delivery.
IndustryTypeBuildData builddata[NUM_INDUSTRYTYPES]
Industry build data for every industry type.
uint16_t max_wait
Starting number of turns to wait (copied to wait_count).
std::array< ProducedHistory, 2 > history
History of cargo produced and transported.
@ PRODLEVEL_CLOSURE
signal set to actually close the industry
void EconomyMonthlyLoop()
Monthly update of industry build data.
uint16_t production
Total produced.
Tindex index
Index of this pool item.
byte was_cargo_delivered
flag that indicate this has been the closest industry chosen for cargo delivery by a station....
bool IsCargoProduced(CargoID cargo) const
Test if this industry produces a specific cargo.
constexpr TileIndex INVALID_TILE
The very nice invalid tile marker.
ProducedCargoArray produced
INDUSTRY_NUM_OUTPUTS production cargo slots.
void RecomputeProductionMultipliers()
Recompute #production_rate for current prod_level.
ProducedCargoArray::iterator GetCargoProduced(CargoID cargo)
Get produced cargo slot for a specific cargo type.
@ MP_INDUSTRY
Part of an industry.
TimerGameEconomy::Date last_accepted
Last day cargo was accepted by this industry.
Templated helper to make a type-safe 'typedef' representing a single POD value.
uint8_t construction_type
Way the industry was constructed (.
Owner exclusive_consumer
Which company has exclusive rights to take cargo (INVALID_OWNER = anyone)
@ PRODLEVEL_DEFAULT
default level set when the industry is created
Defines the internal data of a functional industry.
Owner
Enum for all companies/owners.
IndustryControlFlags ctlflags
flags overriding standard behaviours
Station * neutral_station
Associated neutral station.
static Industry * GetRandom()
Return a random valid industry.
uint16_t waiting
Amount of cargo produced.
static void PostDestructor(size_t index)
Invalidating some stuff after removing item from the pool.
StationList stations_near
NOSAVE: List of nearby stations.
TileArea location
Location of the industry.
void Reset()
Reset the entry.
std::string cached_name
NOSAVE: Cache of the resolved name of the industry.
static Industry * GetByTile(TileIndex tile)
Get the industry of the given tile.
Owner exclusive_supplier
Which company has exclusive rights to deliver cargo (INVALID_OWNER = anyone)
IndustryType type
type of industry.
Data for managing the number and type of industries in the game.
Class for pooled persistent storage of data.
Represents the covered area of e.g.
static void DecIndustryTypeCount(IndustryType type)
Decrement the count of industries for this type.
AcceptedCargoArray accepted
INDUSTRY_NUM_INPUTS input cargo slots.
uint32_t probability
Relative probability of building this industry.
uint16_t wait_count
Number of turns to wait before trying to build again.
@ PRODLEVEL_MAXIMUM
the industry is running at full speed
IndustryID GetIndustryIndex(Tile t)
Get the industry ID of the given tile.
static void ResetIndustryCounts()
Resets industry counts.
void SetupTargetCount()
Decide how many industries of each type are needed.
IndustryDirectoryInvalidateWindowData
Special values for the industry list window for the data parameter of InvalidateWindowData.
void TryBuildNewIndustry()
Try to create a random industry, during gameplay.
static const TimerGameEconomy::Year PROCESSING_INDUSTRY_ABANDONMENT_YEARS
If a processing industry doesn't produce for this many consecutive economy years, it may close.
std::string text
General text with additional information.
std::set< Station *, StationCompare > StationList
List of stations.
Colours random_colour
randomized colour of the industry, for display purpose
bool IsTileForestIndustry(TileIndex tile)
Check whether the tile is a forest.
void Reset()
Completely reset the industry build data.
byte selected_layout
Which tile layout was used when creating the industry.
Base class for all pools.
uint16_t counter
used for animation and/or production (if available cargo)
Owner founder
Founder of the industry.
static void IncIndustryTypeCount(IndustryType type)
Increment the count of industries for this type.
AcceptedCargoArray::iterator GetCargoAccepted(CargoID cargo)
Get accepted cargo slot for a specific cargo type.
ProducedCargoArray::const_iterator GetCargoProduced(CargoID cargo) const
Get produced cargo slot for a specific cargo type (const-variant).
static uint16_t GetIndustryTypeCount(IndustryType type)
Get the count of industries for this type.
byte min_number
Smallest number of industries that should exist (either 0 or 1).
Data for managing the number of industries of a single industry type.
ProductionLevels
Production level maximum, minimum and default values.
PartOfSubsidy
What part of a subsidy is something?
DECLARE_ENUM_AS_BIT_SET(GenderEthnicity) enum CompanyManagerFaceVariable
Bitgroups of the CompanyManagerFace variable.
bool IsCargoProduced() const
Test if this industry produces any cargo.
byte CargoID
Cargo slots to indicate a cargo type within a game.
@ INDCTL_NO_PRODUCTION_DECREASE
When industry production change is evaluated, rolls to decrease are ignored.
bool IsValidCargoID(CargoID t)
Test whether cargo type is not INVALID_CARGO.
TimerGameEconomy::Year last_prod_year
last economy year of production
IndustryBuildData _industry_builder
In-game manager of industries.
bool IsCargoAccepted() const
Test if this industry accepts any cargo.
static debug_inline bool IsTileType(Tile tile, TileType type)
Checks if a tile is a given tiletype.
uint16_t target_count
Desired number of industries of this type.
@ INDCTL_MASK
Mask of all flags set.
byte prod_level
general production level
void ReleaseDisastersTargetingIndustry(IndustryID)
Marks all disasters targeting this industry in such a way they won't call Industry::Get(v->dest_tile)...
TimerGameCalendar::Date construction_date
Date of the construction of the industry.
PersistentStorage * psa
Persistent storage for NewGRF industries.
@ INDCTL_NO_PRODUCTION_INCREASE
When industry production change is evaluated, rolls to increase are ignored.
IndustryControlFlags
Flags to control/override the behaviour of an industry.
uint8_t rate
Production rate.
Base class for all PoolItems.
@ INDCTL_EXTERNAL_PROD_LEVEL
Indicates that the production level of the industry is externally controlled.
bool GetIndustryTypeData(IndustryType it)
Set the probability and min_number fields for the industry type it for a running game.
uint16_t random
Random value used for randomisation of all kinds of things.
bool TileBelongsToIndustry(TileIndex tile) const
Check if a given tile belongs to this industry.