OpenTTD
Functions | Variables
cargomonitor.cpp File Reference

Implementation of the cargo transport monitoring. More...

#include "stdafx.h"
#include "cargomonitor.h"
#include "station_base.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

static void ClearCargoMonitoring (CargoMonitorMap &cargo_monitor_map, CompanyID company=INVALID_OWNER)
 Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring. More...
 
void ClearCargoPickupMonitoring (CompanyID company)
 Clear all pick-up cargo monitors. More...
 
void ClearCargoDeliveryMonitoring (CompanyID company)
 Clear all delivery cargo monitors. More...
 
static int32 GetAmount (CargoMonitorMap &monitor_map, CargoMonitorID monitor, bool keep_monitoring)
 Get and reset the amount associated with a cargo monitor. More...
 
int32 GetDeliveryAmount (CargoMonitorID monitor, bool keep_monitoring)
 Get the amount of cargo delivered for the given cargo monitor since activation or last query. More...
 
int32 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 amount, SourceType src_type, SourceID src, const Station *st)
 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.
 

Detailed Description

Implementation of the cargo transport monitoring.

Definition in file cargomonitor.cpp.

Function Documentation

◆ AddCargoDelivery()

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.

Parameters
cargo_typetype of cargo.
companycompany delivering the cargo.
amountAmount of cargo delivered.
src_typetype of src.
srcindex of source.
ststation 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.

◆ ClearCargoDeliveryMonitoring()

void ClearCargoDeliveryMonitoring ( CompanyID  company)

Clear all delivery cargo monitors.

Parameters
companyclear 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 InitializeEconomy(), and LoadDelivery().

◆ ClearCargoMonitoring()

static void ClearCargoMonitoring ( CargoMonitorMap cargo_monitor_map,
CompanyID  company = INVALID_OWNER 
)
static

Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring.

Clears all monitors that belong to the specified company or all if INVALID_OWNER is specified as company.

Parameters
cargo_monitor_mapreference to the cargo monitor map to operate on.
companycompany to clear cargo monitors for or INVALID_OWNER if all cargo monitors should be cleared.

Definition at line 28 of file cargomonitor.cpp.

References DecodeMonitorCompany(), and INVALID_OWNER.

Referenced by ClearCargoDeliveryMonitoring(), and ClearCargoPickupMonitoring().

◆ ClearCargoPickupMonitoring()

void ClearCargoPickupMonitoring ( CompanyID  company)

Clear all pick-up cargo monitors.

Parameters
companyclear 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 InitializeEconomy(), and LoadPickup().

◆ GetAmount()

static int32 GetAmount ( CargoMonitorMap monitor_map,
CargoMonitorID  monitor,
bool  keep_monitoring 
)
static

Get and reset the amount associated with a cargo monitor.

Parameters
[in,out]monitor_mapMonitoring map to search (and reset for the queried entry).
monitorCargo monitor to query/reset.
keep_monitoringAfter returning from this call, continue monitoring.
Returns
Amount collected since last query/activation for the monitored combination.

Definition at line 72 of file cargomonitor.cpp.

Referenced by GetDeliveryAmount(), and GetPickupAmount().

◆ GetDeliveryAmount()

int32 GetDeliveryAmount ( CargoMonitorID  monitor,
bool  keep_monitoring 
)

Get the amount of cargo delivered for the given cargo monitor since activation or last query.

Parameters
monitorCargo monitor to query.
keep_monitoringAfter returning from this call, continue monitoring.
Returns
Amount of delivered cargo for the monitored combination.

Definition at line 95 of file cargomonitor.cpp.

References _cargo_deliveries, and GetAmount().

◆ GetPickupAmount()

int32 GetPickupAmount ( CargoMonitorID  monitor,
bool  keep_monitoring 
)

Get the amount of cargo picked up for the given cargo monitor since activation or last query.

Parameters
monitorMonitoring number to query.
keep_monitoringAfter returning from this call, continue monitoring.
Returns
Amount of picked up cargo for the monitored combination.
Note
Cargo pick up is counted on final delivery, to prevent users getting credit for picking up cargo without delivering it.

Definition at line 107 of file cargomonitor.cpp.

References _cargo_pickups, and GetAmount().