OpenTTD
|
Cargo transport monitoring declarations. More...
#include "cargo_type.h"
#include "company_func.h"
#include "industry.h"
#include "town.h"
#include "core/overflowsafe_type.hpp"
#include <map>
Go to the source code of this file.
Typedefs | |
typedef uint32 | CargoMonitorID |
Unique number for a company / cargo type / (town or industry). | |
typedef std::map < CargoMonitorID, OverflowSafeInt32 > | CargoMonitorMap |
Map type for storing and updating active cargo monitor numbers and their amounts. |
Enumerations | |
enum | CargoCompanyBits { CCB_TOWN_IND_NUMBER_START = 0, CCB_TOWN_IND_NUMBER_LENGTH = 16, CCB_IS_INDUSTRY_BIT = 16, CCB_IS_INDUSTRY_BIT_VALUE = 1ul << CCB_IS_INDUSTRY_BIT, CCB_CARGO_TYPE_START = 19, CCB_CARGO_TYPE_LENGTH = 5, CCB_COMPANY_START = 24, CCB_COMPANY_LENGTH = 8 } |
Constants for encoding and extracting cargo monitors. More... |
Functions | |
static CargoMonitorID | EncodeCargoIndustryMonitor (CompanyID company, CargoID ctype, IndustryID ind) |
Encode a cargo monitor for pickup or delivery at an industry. | |
static CargoMonitorID | EncodeCargoTownMonitor (CompanyID company, CargoID ctype, TownID town) |
Encode a cargo monitoring number for pickup or delivery at a town. | |
static CompanyID | DecodeMonitorCompany (CargoMonitorID num) |
Extract the company from the cargo monitor. | |
static CargoID | DecodeMonitorCargoType (CargoMonitorID num) |
Extract the cargo type from the cargo monitor. | |
static bool | MonitorMonitorsIndustry (CargoMonitorID num) |
Does the cargo number monitor an industry or a town? | |
static IndustryID | DecodeMonitorIndustry (CargoMonitorID num) |
Extract the industry number from the cargo monitor. | |
static TownID | DecodeMonitorTown (CargoMonitorID num) |
Extract the town number from the cargo monitor. | |
void | ClearCargoPickupMonitoring (CompanyID company=INVALID_OWNER) |
Clear all pick-up cargo monitors. | |
void | ClearCargoDeliveryMonitoring (CompanyID company=INVALID_OWNER) |
Clear all delivery cargo monitors. | |
int32 | GetDeliveryAmount (CargoMonitorID monitor, bool keep_monitoring) |
Get the amount of cargo delivered for the given cargo monitor since activation or last query. | |
int32 | GetPickupAmount (CargoMonitorID monitor, bool keep_monitoring) |
Get the amount of cargo picked up for the given cargo monitor since activation or last query. | |
void | AddCargoDelivery (CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st) |
Cargo was delivered to its final destination, update the pickup and delivery maps. |
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. |
Cargo transport monitoring declarations.
Definition in file cargomonitor.h.
typedef uint32 CargoMonitorID |
Unique number for a company / cargo type / (town or industry).
Encoding is as follows:
Definition at line 22 of file cargomonitor.h.
typedef std::map<CargoMonitorID, OverflowSafeInt32> CargoMonitorMap |
Map type for storing and updating active cargo monitor numbers and their amounts.
Definition at line 35 of file cargomonitor.h.
enum CargoCompanyBits |
Constants for encoding and extracting cargo monitors.
CCB_TOWN_IND_NUMBER_START |
Start bit of the town or industry number. |
CCB_TOWN_IND_NUMBER_LENGTH |
Number of bits of the town or industry number. |
CCB_IS_INDUSTRY_BIT |
Bit indicating the town/industry number is an industry. |
CCB_IS_INDUSTRY_BIT_VALUE |
Value of the CCB_IS_INDUSTRY_BIT bit. |
CCB_CARGO_TYPE_START |
Start bit of the cargo type field. |
CCB_CARGO_TYPE_LENGTH |
Number of bits of the cargo type field. |
CCB_COMPANY_START |
Start bit of the company field. |
CCB_COMPANY_LENGTH |
Number of bits of the company field. |
Definition at line 42 of file cargomonitor.h.
void AddCargoDelivery | ( | CargoID | cargo_type, |
CompanyID | company, | ||
uint32 | amount, | ||
SourceType | src_type, | ||
SourceID | src, | ||
const Station * | st | ||
) |
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. |
Definition at line 121 of file cargomonitor.cpp.
References _cargo_deliveries, _cargo_pickups, SmallVector< T, S >::Begin(), EncodeCargoIndustryMonitor(), EncodeCargoTownMonitor(), SmallVector< T, S >::End(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Station::industries_near, INVALID_SOURCE, ST_INDUSTRY, ST_TOWN, and BaseStation::town.
Referenced by DeliverGoods().
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 60 of file cargomonitor.cpp.
References _cargo_deliveries, and ClearCargoMonitoring().
Referenced by ChangeOwnershipOfCompanyItems(), InitializeEconomy(), and LoadDelivery().
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 50 of file cargomonitor.cpp.
References _cargo_pickups, and ClearCargoMonitoring().
Referenced by ChangeOwnershipOfCompanyItems(), InitializeEconomy(), and LoadPickup().
|
inlinestatic |
Extract the cargo type from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 106 of file cargomonitor.h.
References CCB_CARGO_TYPE_LENGTH, CCB_CARGO_TYPE_START, and GB().
|
inlinestatic |
Extract the company from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 96 of file cargomonitor.h.
References CCB_COMPANY_LENGTH, CCB_COMPANY_START, and GB().
Referenced by ClearCargoMonitoring().
|
inlinestatic |
Extract the industry number from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 126 of file cargomonitor.h.
References CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, GB(), and MonitorMonitorsIndustry().
|
inlinestatic |
Extract the town number from the cargo monitor.
num | Cargo monitoring number to decode. |
Definition at line 137 of file cargomonitor.h.
References CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, GB(), and MonitorMonitorsIndustry().
|
inlinestatic |
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 61 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().
|
inlinestatic |
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 80 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, and SB().
Referenced by AddCargoDelivery().
int32 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 95 of file cargomonitor.cpp.
References _cargo_deliveries, and GetAmount().
int32 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 107 of file cargomonitor.cpp.
References _cargo_pickups, and GetAmount().
|
inlinestatic |
Does the cargo number monitor an industry or a town?
num | Cargo monitoring number to decode. |
Definition at line 116 of file cargomonitor.h.
References CCB_IS_INDUSTRY_BIT, and HasBit().
Referenced by DecodeMonitorIndustry(), and DecodeMonitorTown().