OpenTTD Source
20241108-master-g80f628063a
|
Cargo transport monitoring declarations. More...
#include "cargo_type.h"
#include "company_func.h"
#include "industry.h"
#include "town.h"
#include "core/overflowsafe_type.hpp"
Go to the source code of this file.
Typedefs | |
typedef uint32_t | CargoMonitorID |
Unique number for a company / cargo type / (town or industry). More... | |
typedef std::map< CargoMonitorID, OverflowSafeInt32 > | CargoMonitorMap |
Map type for storing and updating active cargo monitor numbers and their amounts. | |
Functions | |
CargoMonitorID | EncodeCargoIndustryMonitor (CompanyID company, CargoID ctype, IndustryID ind) |
Encode a cargo monitor for pickup or delivery at an industry. More... | |
CargoMonitorID | EncodeCargoTownMonitor (CompanyID company, CargoID ctype, TownID town) |
Encode a cargo monitoring number for pickup or delivery at a town. More... | |
CompanyID | DecodeMonitorCompany (CargoMonitorID num) |
Extract the company from the cargo monitor. More... | |
CargoID | DecodeMonitorCargoType (CargoMonitorID num) |
Extract the cargo type from the cargo monitor. More... | |
bool | MonitorMonitorsIndustry (CargoMonitorID num) |
Does the cargo number monitor an industry or a town? More... | |
IndustryID | DecodeMonitorIndustry (CargoMonitorID num) |
Extract the industry number from the cargo monitor. More... | |
TownID | DecodeMonitorTown (CargoMonitorID num) |
Extract the town number from the cargo monitor. More... | |
void | ClearCargoPickupMonitoring (CompanyID company=INVALID_OWNER) |
Clear all pick-up cargo monitors. More... | |
void | ClearCargoDeliveryMonitoring (CompanyID company=INVALID_OWNER) |
Clear all delivery cargo monitors. More... | |
int32_t | GetDeliveryAmount (CargoMonitorID monitor, bool keep_monitoring) |
Get the amount of cargo delivered for the given cargo monitor since activation or last query. More... | |
int32_t | GetPickupAmount (CargoMonitorID monitor, bool keep_monitoring) |
Get the amount of cargo picked up for the given cargo monitor since activation or last query. More... | |
void | AddCargoDelivery (CargoID cargo_type, CompanyID company, uint32_t 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. More... | |
Variables | |
CargoMonitorMap | _cargo_pickups |
Map of monitored pick-ups to the amount since last query/activation. | |
CargoMonitorMap | _cargo_deliveries |
Map of monitored deliveries to the amount since last query/activation. | |
constexpr uint8_t | CCB_TOWN_IND_NUMBER_START = 0 |
Start bit of the town or industry number. | |
constexpr uint8_t | CCB_TOWN_IND_NUMBER_LENGTH = 16 |
Number of bits of the town or industry number. | |
constexpr uint8_t | CCB_IS_INDUSTRY_BIT = 16 |
Bit indicating the town/industry number is an industry. | |
constexpr uint8_t | CCB_CARGO_TYPE_START = 19 |
Start bit of the cargo type field. | |
constexpr uint8_t | CCB_CARGO_TYPE_LENGTH = 6 |
Number of bits of the cargo type field. | |
constexpr uint8_t | CCB_COMPANY_START = 25 |
Start bit of the company field. | |
constexpr uint8_t | CCB_COMPANY_LENGTH = 4 |
Number of bits of the company field. | |
Cargo transport monitoring declarations.
Definition in file cargomonitor.h.
typedef uint32_t CargoMonitorID |
Unique number for a company / cargo type / (town or industry).
Encoding is as follows:
Definition at line 29 of file cargomonitor.h.
void AddCargoDelivery | ( | CargoID | cargo_type, |
CompanyID | company, | ||
uint32_t | amount, | ||
SourceType | src_type, | ||
SourceID | src, | ||
const Station * | st, | ||
IndustryID | dest | ||
) |
Cargo was delivered to its final destination, update the pickup and delivery maps.
cargo_type | type of cargo. |
company | company delivering the cargo. |
amount | Amount of cargo delivered. |
src_type | type of src. |
src | index of source. |
st | station where the cargo is delivered to. |
dest | industry index where the cargo is delivered to. |
Definition at line 118 of file cargomonitor.cpp.
References _cargo_deliveries, _cargo_pickups, EncodeCargoIndustryMonitor(), EncodeCargoTownMonitor(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Station::industries_near, Industry, INVALID_SOURCE, BaseStation::town, and Town.
Referenced by DeliverGoodsToIndustry().
void ClearCargoDeliveryMonitoring | ( | CompanyID | company | ) |
Clear all delivery cargo monitors.
company | clear all delivery monitors for this company or if INVALID_OWNER is passed, all delivery monitors are cleared regardless of company. |
Definition at line 57 of file cargomonitor.cpp.
References _cargo_deliveries, and ClearCargoMonitoring().
Referenced by CMDLChunkHandler::Load().
void ClearCargoPickupMonitoring | ( | CompanyID | company | ) |
Clear all pick-up cargo monitors.
company | clear all pick-up monitors for this company or if INVALID_OWNER is passed, all pick-up monitors are cleared regardless of company. |
Definition at line 47 of file cargomonitor.cpp.
References _cargo_pickups, and ClearCargoMonitoring().
Referenced by CMPUChunkHandler::Load().
|
inline |
Extract the cargo type from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 105 of file cargomonitor.h.
References CCB_CARGO_TYPE_LENGTH, CCB_CARGO_TYPE_START, and GB().
|
inline |
Extract the company from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 95 of file cargomonitor.h.
References CCB_COMPANY_LENGTH, CCB_COMPANY_START, and GB().
Referenced by ClearCargoMonitoring().
|
inline |
Extract the industry number from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 125 of file cargomonitor.h.
References MonitorMonitorsIndustry().
|
inline |
Extract the town number from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 136 of file cargomonitor.h.
References MonitorMonitorsIndustry().
|
inline |
Encode a cargo monitor for pickup or delivery at an industry.
company | Company performing the transport. |
ctype | Cargo type being transported. |
ind | Industry providing or accepting the cargo. |
Definition at line 58 of file cargomonitor.h.
References CCB_CARGO_TYPE_LENGTH, CCB_CARGO_TYPE_START, CCB_COMPANY_LENGTH, CCB_COMPANY_START, CCB_IS_INDUSTRY_BIT, CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, SB(), and SetBit().
Referenced by AddCargoDelivery().
|
inline |
Encode a cargo monitoring number for pickup or delivery at a town.
company | Company performing the transport. |
ctype | Cargo type being transported. |
town | Town providing or accepting the cargo. |
Definition at line 78 of file cargomonitor.h.
References CCB_CARGO_TYPE_LENGTH, CCB_CARGO_TYPE_START, CCB_COMPANY_LENGTH, CCB_COMPANY_START, CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, SB(), and BaseStation::town.
Referenced by AddCargoDelivery().
int32_t GetDeliveryAmount | ( | CargoMonitorID | monitor, |
bool | keep_monitoring | ||
) |
Get the amount of cargo delivered for the given cargo monitor since activation or last query.
monitor | Cargo monitor to query. |
keep_monitoring | After returning from this call, continue monitoring. |
Definition at line 91 of file cargomonitor.cpp.
References _cargo_deliveries, and GetAmount().
int32_t GetPickupAmount | ( | CargoMonitorID | monitor, |
bool | keep_monitoring | ||
) |
Get the amount of cargo picked up for the given cargo monitor since activation or last query.
monitor | Monitoring number to query. |
keep_monitoring | After returning from this call, continue monitoring. |
Definition at line 103 of file cargomonitor.cpp.
References _cargo_pickups, and GetAmount().
|
inline |
Does the cargo number monitor an industry or a town?
num | Cargo monitoring number to decode. |
Definition at line 115 of file cargomonitor.h.
References CCB_IS_INDUSTRY_BIT, and HasBit().
Referenced by DecodeMonitorIndustry(), and DecodeMonitorTown().