Typedefs | Enumerations | Functions | Variables

# cargomonitor.h File Reference

Cargo transport monitoring declarations. More...

`#include "cargo_type.h"`
`#include "company_func.h"`
`#include "industry.h"`
`#include "town.h"`
`#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, uint32 > | 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.
uint32 | GetDeliveryAmount (CargoMonitorID monitor, bool keep_monitoring)
| Get the amount of cargo delivered for the given cargo monitor since activation or last query.
uint32 | 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.

## Detailed Description

Cargo transport monitoring declarations.

Definition in file cargomonitor.h.

## Typedef Documentation

typedef uint32 CargoMonitorID

Unique number for a company / cargo type / (town or industry).

Encoding is as follows:

- bits 0-15 town or industry number
- bit 16 is set if it is an industry number (else it is a town number).
- bits 19-23 Cargo type.
- bits 24-31 Company number. Type of the cargo monitor number.

Definition at line 21 of file cargomonitor.h.

typedef std::map<CargoMonitorID, uint32> CargoMonitorMap

Map type for storing and updating active cargo monitor numbers and their amounts.

Definition at line 34 of file cargomonitor.h.

## Enumeration Type Documentation

enum CargoCompanyBits

Constants for encoding and extracting cargo monitors.

Enumerator:

  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 41 of file cargomonitor.h.

## Function Documentation

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_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 119 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.

Parameters:

  | 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 58 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.

Parameters:

  | 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 48 of file cargomonitor.cpp.

References _cargo_pickups, and ClearCargoMonitoring().

Referenced by ChangeOwnershipOfCompanyItems(), InitializeEconomy(), and LoadPickup().

static CargoID DecodeMonitorCargoType | ( | CargoMonitorID | num | ) | `[inline, static]`

Extract the cargo type from the cargo monitor.

Parameters:

  | num | Cargo monitoring number to decode.

Returns:
  The extracted cargo type.

Definition at line 105 of file cargomonitor.h.

References CCB_CARGO_TYPE_LENGTH, CCB_CARGO_TYPE_START, and GB().

static CompanyID DecodeMonitorCompany | ( | CargoMonitorID | num | ) | `[inline, static]`

Extract the company from the cargo monitor.

Parameters:

  | num | Cargo monitoring number to decode.

Returns:
  The extracted company id.

Definition at line 95 of file cargomonitor.h.

References CCB_COMPANY_LENGTH, CCB_COMPANY_START, and GB().

Referenced by ClearCargoMonitoring().

static IndustryID DecodeMonitorIndustry | ( | CargoMonitorID | num | ) | `[inline, static]`

Extract the industry number from the cargo monitor.

Parameters:

  | num | Cargo monitoring number to decode.

Returns:
  The extracted industry id, or INVALID_INDUSTRY if the number does not monitor an industry.

Definition at line 125 of file cargomonitor.h.

References CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, GB(), and MonitorMonitorsIndustry().

static TownID DecodeMonitorTown | ( | CargoMonitorID | num | ) | `[inline, static]`

Extract the town number from the cargo monitor.

Parameters:

  | num | Cargo monitoring number to decode.

Returns:
  The extracted town id, or INVALID_TOWN if the number does not monitor a town.

Definition at line 136 of file cargomonitor.h.

References CCB_TOWN_IND_NUMBER_LENGTH, CCB_TOWN_IND_NUMBER_START, GB(), and MonitorMonitorsIndustry().

static CargoMonitorID EncodeCargoIndustryMonitor | ( | CompanyID | company,
|  | CargoID | ctype,
|  | IndustryID | ind |
| ) |  |  | `[inline, static]`

Encode a cargo monitor for pickup or delivery at an industry.

Parameters:

  | company | Company performing the transport.
  | ctype | Cargo type being transported.
  | ind | Industry providing or accepting the cargo.

Returns:
  The encoded cargo/company/industry number.

Definition at line 60 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().

static CargoMonitorID EncodeCargoTownMonitor | ( | CompanyID | company,
|  | CargoID | ctype,
|  | TownID | town |
| ) |  |  | `[inline, static]`

Encode a cargo monitoring number for pickup or delivery at a town.

Parameters:

  | company | Company performing the transport.
  | ctype | Cargo type being transported.
  | town | Town providing or accepting the cargo.

Returns:
  The encoded cargo/company/town number.

Definition at line 79 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().

uint32 GetDeliveryAmount | ( | CargoMonitorID | monitor,
|  | bool | keep_monitoring |
| ) |  |  |

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

Parameters:

  | monitor | Cargo monitor to query.
  | keep_monitoring | After returning from this call, continue monitoring.

Returns:
  Amount of delivered cargo for the monitored combination.

Definition at line 93 of file cargomonitor.cpp.

References _cargo_deliveries, and GetAmount().

uint32 GetPickupAmount | ( | CargoMonitorID | monitor,
|  | bool | keep_monitoring |
| ) |  |  |

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

Parameters:

  | monitor | Monitoring number to query.
  | keep_monitoring | After 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 105 of file cargomonitor.cpp.

References _cargo_pickups, and GetAmount().

static bool MonitorMonitorsIndustry | ( | CargoMonitorID | num | ) | `[inline, static]`

Does the cargo number monitor an industry or a town?

Parameters:

  | num | Cargo monitoring number to decode.

Returns:
  true if monitoring an industry, false if monitoring a town.

Definition at line 115 of file cargomonitor.h.

References CCB_IS_INDUSTRY_BIT, and HasBit().

Referenced by DecodeMonitorIndustry(), and DecodeMonitorTown().