2007-12-21 21:50:46 +00:00
|
|
|
/* $Id$ */
|
|
|
|
|
|
|
|
/** @file economy_type.h Types related to the economy. */
|
|
|
|
|
|
|
|
#ifndef ECONOMY_TYPE_H
|
|
|
|
#define ECONOMY_TYPE_H
|
|
|
|
|
|
|
|
#include "core/overflowsafe_type.hpp"
|
|
|
|
#include "core/enum_type.hpp"
|
2007-12-21 22:50:51 +00:00
|
|
|
#include "cargo_type.h"
|
2007-12-21 21:50:46 +00:00
|
|
|
|
|
|
|
typedef OverflowSafeInt64 Money;
|
|
|
|
|
|
|
|
struct Economy {
|
2008-09-15 17:18:22 +00:00
|
|
|
Money max_loan; ///< Maximum possible loan
|
|
|
|
Money max_loan_unround; ///< Economy fluctuation status
|
|
|
|
uint16 max_loan_unround_fract; ///< Fraction of the unrounded max loan
|
2008-07-07 09:23:54 +00:00
|
|
|
int16 fluct;
|
2008-09-15 17:18:22 +00:00
|
|
|
byte interest_rate; ///< Interest
|
|
|
|
byte infl_amount; ///< inflation amount
|
|
|
|
byte infl_amount_pr; ///< inflation rate for payment rates
|
|
|
|
uint32 industry_daily_change_counter; ///< Bits 31-16 are number of industry to be performed, 15-0 are fractional collected daily
|
|
|
|
uint32 industry_daily_increment; ///< The value which will increment industry_daily_change_counter. Computed value. NOSAVE
|
2007-12-21 21:50:46 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct Subsidy {
|
|
|
|
CargoID cargo_type;
|
|
|
|
byte age;
|
|
|
|
/* from and to can either be TownID, StationID or IndustryID */
|
|
|
|
uint16 from;
|
|
|
|
uint16 to;
|
|
|
|
};
|
|
|
|
|
|
|
|
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, ///< This must always be the last entry
|
|
|
|
SCORE_END = 10, ///< How many scores are there..
|
|
|
|
|
|
|
|
SCORE_MAX = 1000 ///< The max score that can be in the performance history
|
|
|
|
/* the scores together of score_info is allowed to be more! */
|
|
|
|
};
|
|
|
|
DECLARE_POSTFIX_INCREMENT(ScoreID);
|
|
|
|
|
|
|
|
struct ScoreInfo {
|
|
|
|
byte id; ///< Unique ID of the score
|
|
|
|
int needed; ///< How much you need to get the perfect score
|
|
|
|
int score; ///< How much score it will give
|
|
|
|
};
|
|
|
|
|
|
|
|
struct Prices {
|
|
|
|
Money station_value;
|
|
|
|
Money build_rail;
|
|
|
|
Money build_road;
|
|
|
|
Money build_signals;
|
|
|
|
Money build_bridge;
|
|
|
|
Money build_train_depot;
|
|
|
|
Money build_road_depot;
|
|
|
|
Money build_ship_depot;
|
|
|
|
Money build_tunnel;
|
|
|
|
Money train_station_track;
|
|
|
|
Money train_station_length;
|
|
|
|
Money build_airport;
|
|
|
|
Money build_bus_station;
|
|
|
|
Money build_truck_station;
|
|
|
|
Money build_dock;
|
|
|
|
Money build_railvehicle;
|
|
|
|
Money build_railwagon;
|
|
|
|
Money aircraft_base;
|
|
|
|
Money roadveh_base;
|
|
|
|
Money ship_base;
|
|
|
|
Money build_trees;
|
|
|
|
Money terraform;
|
|
|
|
Money clear_grass;
|
|
|
|
Money clear_roughland;
|
|
|
|
Money clear_rocks;
|
|
|
|
Money clear_fields;
|
|
|
|
Money remove_trees;
|
|
|
|
Money remove_rail;
|
|
|
|
Money remove_signals;
|
|
|
|
Money clear_bridge;
|
|
|
|
Money remove_train_depot;
|
|
|
|
Money remove_road_depot;
|
|
|
|
Money remove_ship_depot;
|
|
|
|
Money clear_tunnel;
|
|
|
|
Money clear_water;
|
|
|
|
Money remove_rail_station;
|
|
|
|
Money remove_airport;
|
|
|
|
Money remove_bus_station;
|
|
|
|
Money remove_truck_station;
|
|
|
|
Money remove_dock;
|
|
|
|
Money remove_house;
|
|
|
|
Money remove_road;
|
|
|
|
Money running_rail[3];
|
|
|
|
Money aircraft_running;
|
|
|
|
Money roadveh_running;
|
|
|
|
Money ship_running;
|
|
|
|
Money build_industry;
|
|
|
|
};
|
|
|
|
|
|
|
|
enum {
|
|
|
|
NUM_PRICES = 49,
|
|
|
|
};
|
|
|
|
|
|
|
|
assert_compile(NUM_PRICES * sizeof(Money) == sizeof(Prices));
|
|
|
|
|
|
|
|
enum ExpensesType {
|
|
|
|
EXPENSES_CONSTRUCTION = 0,
|
2008-02-09 02:49:33 +00:00
|
|
|
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,
|
2008-01-09 16:55:48 +00:00
|
|
|
INVALID_EXPENSES = 0xFF,
|
2007-12-21 21:50:46 +00:00
|
|
|
};
|
|
|
|
|
2008-01-12 14:10:35 +00:00
|
|
|
/* The "steps" in loan size, in British Pounds! */
|
|
|
|
enum {
|
|
|
|
LOAN_INTERVAL = 10000,
|
|
|
|
LOAN_INTERVAL_OLD_AI = 50000,
|
|
|
|
};
|
|
|
|
|
2007-12-21 21:50:46 +00:00
|
|
|
#endif /* ECONOMY_TYPE_H */
|