Go to the documentation of this file.
10 #ifndef CARGOMONITOR_H
11 #define CARGOMONITOR_H
static CargoMonitorID EncodeCargoTownMonitor(CompanyID company, CargoID ctype, TownID town)
Encode a cargo monitoring number for pickup or delivery at a town.
static CargoMonitorID EncodeCargoIndustryMonitor(CompanyID company, CargoID ctype, IndustryID ind)
Encode a cargo monitor for pickup or delivery at an industry.
static uint GB(const T x, const uint8 s, const uint8 n)
Fetch n bits from x, started at bit s.
std::map< CargoMonitorID, OverflowSafeInt32 > CargoMonitorMap
Map type for storing and updating active cargo monitor numbers and their amounts.
Town * town
The town this station is associated with.
@ CCB_COMPANY_LENGTH
Number of bits of the company field.
CargoMonitorMap _cargo_deliveries
Map of monitored deliveries to the amount since last query/activation.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
static IndustryID DecodeMonitorIndustry(CargoMonitorID num)
Extract the industry number from the cargo monitor.
uint32 CargoMonitorID
Unique number for a company / cargo type / (town or industry).
Owner
Enum for all companies/owners.
@ CCB_TOWN_IND_NUMBER_LENGTH
Number of bits of the town or industry number.
int32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring)
Get the amount of cargo delivered for the given cargo monitor since activation or last query.
uint16 SourceID
Contains either industry ID, town ID or company ID (or INVALID_SOURCE)
@ CCB_CARGO_TYPE_LENGTH
Number of bits of the cargo type field.
static T SB(T &x, const uint8 s, const uint8 n, const U d)
Set n bits in x starting at bit s to d.
@ INVALID_OWNER
An invalid owner.
void ClearCargoPickupMonitoring(CompanyID company=INVALID_OWNER)
Clear all pick-up cargo monitors.
static CompanyID DecodeMonitorCompany(CargoMonitorID num)
Extract the company from the cargo monitor.
@ MAX_COMPANIES
Maximum number of companies.
@ CCB_IS_INDUSTRY_BIT
Bit indicating the town/industry number is an industry.
@ CCB_TOWN_IND_NUMBER_START
Start bit of the town or industry number.
@ CCB_CARGO_TYPE_START
Start bit of the cargo type field.
static TownID DecodeMonitorTown(CargoMonitorID num)
Extract the town number from the cargo monitor.
CargoMonitorMap _cargo_pickups
Map of monitored pick-ups to the amount since last query/activation.
SourceType
Types of cargo source and destination.
static bool MonitorMonitorsIndustry(CargoMonitorID num)
Does the cargo number monitor an industry or a town?
@ CCB_IS_INDUSTRY_BIT_VALUE
Value of the CCB_IS_INDUSTRY_BIT bit.
@ NUM_CARGO
Maximal number of cargo types in a game.
static CargoID DecodeMonitorCargoType(CargoMonitorID num)
Extract the cargo type from the cargo monitor.
static T SetBit(T &x, const uint8 y)
Set a bit in a variable.
byte CargoID
Cargo slots to indicate a cargo type within a game.
@ CCB_COMPANY_START
Start bit of the company field.
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st, IndustryID dest=INVALID_INDUSTRY)
Cargo was delivered to its final destination, update the pickup and delivery maps.
void ClearCargoDeliveryMonitoring(CompanyID company=INVALID_OWNER)
Clear all delivery cargo monitors.
int32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring)
Get the amount of cargo picked up for the given cargo monitor since activation or last query.
CargoCompanyBits
Constants for encoding and extracting cargo monitors.