OpenTTD Source
20240917-master-g9ab0a47812
|
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 ProducedCargoes = std::vector<ProducedCargo>;
94 using AcceptedCargoes = std::vector<AcceptedCargo>;
150 return slot < this->produced.size() ? this->produced[slot] : empty;
161 return slot < this->accepted.size() ? this->accepted[slot] : empty;
172 return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](
const auto &p) {
return p.cargo == cargo; });
183 return std::find_if(std::begin(this->produced), std::end(this->produced), [&cargo](
const auto &p) {
return p.cargo == cargo; });
194 return std::find_if(std::begin(this->accepted), std::end(this->accepted), [&cargo](
const auto &a) {
return a.cargo == cargo; });
205 return std::find_if(std::begin(this->accepted), std::end(this->accepted), [&cargo](
const auto &a) {
return a.cargo == cargo; });
212 bool IsCargoAccepted()
const {
return std::any_of(std::begin(this->accepted), std::end(this->accepted), [](
const auto &a) {
return IsValidCargoID(a.cargo); }); }
218 bool IsCargoProduced()
const {
return std::any_of(std::begin(this->produced), std::end(this->produced), [](
const auto &p) {
return IsValidCargoID(p.cargo); }); }
225 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; }); }
232 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; }); }
287 inline const std::string &GetCachedName()
const
289 if (this->cached_name.empty()) this->FillCachedName();
294 void FillCachedName()
const;
300 void ClearAllIndustryCachedNames();
302 void PlantRandomFarmField(
const Industry *i);
342 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?
static uint16_t counts[NUM_INDUSTRYTYPES]
Number of industries per type ingame.
IndustryTypeBuildData builddata[NUM_INDUSTRYTYPES]
Industry build data for every industry type.
@ INDCTL_MASK
Mask of all flags set.
ProducedCargoes::const_iterator GetCargoProduced(CargoID cargo) const
Get produced cargo slot for a specific cargo type (const-variant).
AcceptedCargoes::const_iterator GetCargoAccepted(CargoID cargo) const
Get accepted cargo slot for a specific cargo type (const-variant).
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.
Owner
Enum for all companies/owners.
Tindex index
Index of this pool item.
@ INDCTL_NO_PRODUCTION_DECREASE
When industry production change is evaluated, rolls to decrease are ignored.
bool IsCargoProduced(CargoID cargo) const
Test if this industry produces a specific cargo.
constexpr TileIndex INVALID_TILE
The very nice invalid tile marker.
void RecomputeProductionMultipliers()
Recompute #production_rate for current prod_level.
@ INDCTL_NONE
No flags in effect.
@ MP_INDUSTRY
Part of an industry.
TimerGameEconomy::Date last_accepted
Last day cargo was accepted by this industry.
@ INDCTL_NO_CLOSURE
Industry can not close regardless of production level or time since last delivery.
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)
IndustryControlFlags
Flags to control/override the behaviour of an industry.
@ PRODLEVEL_DEFAULT
default level set when the industry is created
Defines the internal data of a functional industry.
IndustryControlFlags ctlflags
flags overriding standard behaviours
Station * neutral_station
Associated neutral station.
AcceptedCargoes accepted
accepted cargo slots
const AcceptedCargo & GetAccepted(size_t slot) const
Safely get an accepted cargo slot, or an empty data if the slot does not exist.
const ProducedCargo & GetProduced(size_t slot) const
Safely get a produced cargo slot, or an empty data if the slot does not exist.
static Industry * GetRandom()
Return a random valid industry.
uint16_t waiting
Amount of cargo produced.
uint8_t prod_level
general production level
static void PostDestructor(size_t index)
Invalidating some stuff after removing item from the pool.
ProducedCargoes produced
produced cargo slots
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.
uint8_t selected_layout
Which tile layout was used when creating the industry.
Represents the covered area of e.g.
void TrimIndustryAcceptedProduced(Industry *ind)
Remove unused industry accepted/produced slots – entries after the last slot with valid cargo.
static void DecIndustryTypeCount(IndustryType type)
Decrement the count of industries for this type.
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.
ProducedCargoes::iterator GetCargoProduced(CargoID cargo)
Get produced cargo slot for a specific cargo type.
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.
Base class for all pools.
@ INDCTL_NO_PRODUCTION_INCREASE
When industry production change is evaluated, rolls to increase are ignored.
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.
static uint16_t GetIndustryTypeCount(IndustryType type)
Get the count of industries for this type.
uint8_t CargoID
Cargo slots to indicate a cargo type within a game.
Data for managing the number of industries of a single industry type.
ProductionLevels
Production level maximum, minimum and default values.
DECLARE_ENUM_AS_BIT_SET(GenderEthnicity) enum CompanyManagerFaceVariable
Bitgroups of the CompanyManagerFace variable.
bool IsCargoProduced() const
Test if this industry produces any cargo.
uint8_t min_number
Smallest number of industries that should exist (either 0 or 1).
bool IsValidCargoID(CargoID t)
Test whether cargo type is not INVALID_CARGO.
AcceptedCargoes::iterator GetCargoAccepted(CargoID cargo)
Get accepted cargo slot for a specific cargo type.
TimerGameEconomy::Year last_prod_year
last economy year of production
IndustryBuildData _industry_builder
In-game manager of industries.
uint8_t was_cargo_delivered
flag that indicate this has been the closest industry chosen for cargo delivery by a station....
bool IsCargoAccepted() const
Test if this industry accepts any cargo.
@ INDCTL_EXTERNAL_PROD_LEVEL
Indicates that the production level of the industry is externally controlled.
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.
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.
uint8_t rate
Production rate.
Base class for all PoolItems.
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.
PartOfSubsidy
What part of a subsidy is something?