OpenTTD
Data Structures | Typedefs | Enumerations | Variables
economy_type.h File Reference

Types related to the economy. More...

#include "core/overflowsafe_type.hpp"
#include "core/enum_type.hpp"

Go to the source code of this file.

Data Structures

struct  Economy
 Data of the economy. More...
 
struct  ScoreInfo
 Data structure for storing how the score is computed for a single score id. More...
 
struct  EnumPropsT< ExpensesType >
 Define basic enum properties for ExpensesType. More...
 
struct  PriceBaseSpec
 Describes properties of price bases. More...
 

Typedefs

typedef OverflowSafeInt64 Money
 
typedef Money Prices[PR_END]
 Prices of everything. More...
 
typedef int8 PriceMultipliers[PR_END]
 
typedef TinyEnumT< ExpensesTypeExpensesTypeByte
 typedefing-enumification of ExpensesType
 
typedef uint32 CargoPaymentID
 

Enumerations

enum  ScoreID {
  SCORE_BEGIN = 0, SCORE_VEHICLES = 0, SCORE_STATIONS = 1, SCORE_MIN_PROFIT = 2,
  SCORE_MIN_INCOME = 3, SCORE_MAX_INCOME = 4, SCORE_DELIVERED = 5, SCORE_CARGO = 6,
  SCORE_MONEY = 7, SCORE_LOAN = 8, SCORE_TOTAL = 9, SCORE_END = 10,
  SCORE_MAX = 1000
}
 Score categories in the detailed performance rating. More...
 
enum  Price {
  PR_BEGIN = 0, PR_STATION_VALUE = 0, PR_BUILD_RAIL, PR_BUILD_ROAD,
  PR_BUILD_SIGNALS, PR_BUILD_BRIDGE, PR_BUILD_DEPOT_TRAIN, PR_BUILD_DEPOT_ROAD,
  PR_BUILD_DEPOT_SHIP, PR_BUILD_TUNNEL, PR_BUILD_STATION_RAIL, PR_BUILD_STATION_RAIL_LENGTH,
  PR_BUILD_STATION_AIRPORT, PR_BUILD_STATION_BUS, PR_BUILD_STATION_TRUCK, PR_BUILD_STATION_DOCK,
  PR_BUILD_VEHICLE_TRAIN, PR_BUILD_VEHICLE_WAGON, PR_BUILD_VEHICLE_AIRCRAFT, PR_BUILD_VEHICLE_ROAD,
  PR_BUILD_VEHICLE_SHIP, PR_BUILD_TREES, PR_TERRAFORM, PR_CLEAR_GRASS,
  PR_CLEAR_ROUGH, PR_CLEAR_ROCKS, PR_CLEAR_FIELDS, PR_CLEAR_TREES,
  PR_CLEAR_RAIL, PR_CLEAR_SIGNALS, PR_CLEAR_BRIDGE, PR_CLEAR_DEPOT_TRAIN,
  PR_CLEAR_DEPOT_ROAD, PR_CLEAR_DEPOT_SHIP, PR_CLEAR_TUNNEL, PR_CLEAR_WATER,
  PR_CLEAR_STATION_RAIL, PR_CLEAR_STATION_AIRPORT, PR_CLEAR_STATION_BUS, PR_CLEAR_STATION_TRUCK,
  PR_CLEAR_STATION_DOCK, PR_CLEAR_HOUSE, PR_CLEAR_ROAD, PR_RUNNING_TRAIN_STEAM,
  PR_RUNNING_TRAIN_DIESEL, PR_RUNNING_TRAIN_ELECTRIC, PR_RUNNING_AIRCRAFT, PR_RUNNING_ROADVEH,
  PR_RUNNING_SHIP, PR_BUILD_INDUSTRY, PR_CLEAR_INDUSTRY, PR_BUILD_OBJECT,
  PR_CLEAR_OBJECT, PR_BUILD_WAYPOINT_RAIL, PR_CLEAR_WAYPOINT_RAIL, PR_BUILD_WAYPOINT_BUOY,
  PR_CLEAR_WAYPOINT_BUOY, PR_TOWN_ACTION, PR_BUILD_FOUNDATION, PR_BUILD_INDUSTRY_RAW,
  PR_BUILD_TOWN, PR_BUILD_CANAL, PR_CLEAR_CANAL, PR_BUILD_AQUEDUCT,
  PR_CLEAR_AQUEDUCT, PR_BUILD_LOCK, PR_CLEAR_LOCK, PR_INFRASTRUCTURE_RAIL,
  PR_INFRASTRUCTURE_ROAD, PR_INFRASTRUCTURE_WATER, PR_INFRASTRUCTURE_STATION, PR_INFRASTRUCTURE_AIRPORT,
  PR_END, INVALID_PRICE = 0xFF
}
 Enumeration of all base prices for use with Prices. More...
 
enum  ExpensesType {
  EXPENSES_CONSTRUCTION = 0, EXPENSES_NEW_VEHICLES, EXPENSES_TRAIN_RUN, EXPENSES_ROADVEH_RUN,
  EXPENSES_AIRCRAFT_RUN, EXPENSES_SHIP_RUN, EXPENSES_PROPERTY, EXPENSES_TRAIN_INC,
  EXPENSES_ROADVEH_INC, EXPENSES_AIRCRAFT_INC, EXPENSES_SHIP_INC, EXPENSES_LOAN_INT,
  EXPENSES_OTHER, EXPENSES_END, INVALID_EXPENSES = 0xFF
}
 Types of expenses. More...
 
enum  PriceCategory { PCAT_NONE, PCAT_RUNNING, PCAT_CONSTRUCTION }
 Categories of a price bases. More...
 

Variables

static const int LOAN_INTERVAL = 10000
 The "steps" in loan size, in British Pounds!
 
static const uint64 MAX_INFLATION = (1ull << (63 - 32)) - 1
 Maximum inflation (including fractional part) without causing overflows in int64 price computations. More...
 
static const int MIN_PRICE_MODIFIER = -8
 Maximum NewGRF price modifiers. More...
 
static const int MAX_PRICE_MODIFIER = 16
 
static const int INVALID_PRICE_MODIFIER = MIN_PRICE_MODIFIER - 1
 
static const uint TUNNELBRIDGE_TRACKBIT_FACTOR = 4
 Multiplier for how many regular track bits a tunnel/bridge counts. More...
 
static const uint LEVELCROSSING_TRACKBIT_FACTOR = 2
 Multiplier for how many regular track bits a level crossing counts. More...
 
static const uint LOCK_DEPOT_TILE_FACTOR = 2
 Multiplier for how many regular tiles a lock counts. More...
 

Detailed Description

Types related to the economy.

Definition in file economy_type.h.

Typedef Documentation

◆ Prices

typedef Money Prices[PR_END]

Prices of everything.

See also
Price

Definition at line 146 of file economy_type.h.

Enumeration Type Documentation

◆ ExpensesType

Types of expenses.

Enumerator
EXPENSES_CONSTRUCTION 

Construction costs.

EXPENSES_NEW_VEHICLES 

New vehicles.

EXPENSES_TRAIN_RUN 

Running costs trains.

EXPENSES_ROADVEH_RUN 

Running costs road vehicles.

EXPENSES_AIRCRAFT_RUN 

Running costs aircrafts.

EXPENSES_SHIP_RUN 

Running costs ships.

EXPENSES_PROPERTY 

Property costs.

EXPENSES_TRAIN_INC 

Income from trains.

EXPENSES_ROADVEH_INC 

Income from road vehicles.

EXPENSES_AIRCRAFT_INC 

Income from aircrafts.

EXPENSES_SHIP_INC 

Income from ships.

EXPENSES_LOAN_INT 

Interest payments over the loan.

EXPENSES_OTHER 

Other expenses.

EXPENSES_END 

Number of expense types.

INVALID_EXPENSES 

Invalid expense type.

Definition at line 150 of file economy_type.h.

◆ Price

enum Price

Enumeration of all base prices for use with Prices.

The prices are ordered as they are expected by NewGRF cost multipliers, so don't shuffle them.

Definition at line 67 of file economy_type.h.

◆ PriceCategory

Categories of a price bases.

Enumerator
PCAT_NONE 

Not affected by difficulty settings.

PCAT_RUNNING 

Price is affected by "vehicle running cost" difficulty setting.

PCAT_CONSTRUCTION 

Price is affected by "construction cost" difficulty setting.

Definition at line 175 of file economy_type.h.

◆ ScoreID

enum ScoreID

Score categories in the detailed performance rating.

Enumerator
SCORE_TOTAL 

This must always be the last entry.

SCORE_END 

How many scores are there..

SCORE_MAX 

The max score that can be in the performance history.

Definition at line 38 of file economy_type.h.

Variable Documentation

◆ LEVELCROSSING_TRACKBIT_FACTOR

const uint LEVELCROSSING_TRACKBIT_FACTOR = 2
static

Multiplier for how many regular track bits a level crossing counts.

Definition at line 216 of file economy_type.h.

Referenced by CmdConvertRail().

◆ LOCK_DEPOT_TILE_FACTOR

const uint LOCK_DEPOT_TILE_FACTOR = 2
static

Multiplier for how many regular tiles a lock counts.

Definition at line 218 of file economy_type.h.

Referenced by RemoveLock().

◆ MAX_INFLATION

const uint64 MAX_INFLATION = (1ull << (63 - 32)) - 1
static

Maximum inflation (including fractional part) without causing overflows in int64 price computations.

This allows for 32 bit base prices (21 are currently needed). Considering the sign bit and 16 fractional bits, there are 15 bits left. 170 years of 4% inflation result in a inflation of about 822, so 10 bits are actually enough. Note that NewGRF multipliers share the 16 fractional bits.

See also
MAX_PRICE_MODIFIER

Definition at line 202 of file economy_type.h.

Referenced by AddInflation().

◆ MIN_PRICE_MODIFIER

const int MIN_PRICE_MODIFIER = -8
static

Maximum NewGRF price modifiers.

Increasing base prices by factor 65536 should be enough.

See also
MAX_INFLATION

Definition at line 209 of file economy_type.h.

◆ TUNNELBRIDGE_TRACKBIT_FACTOR

const uint TUNNELBRIDGE_TRACKBIT_FACTOR = 4
static

Multiplier for how many regular track bits a tunnel/bridge counts.

Definition at line 214 of file economy_type.h.

Referenced by CmdConvertRail().