Files
@ r27835:eabfaa878ced
Branch filter:
Location: cpp/openttd-patchpack/source/src/currency.h - annotation
r27835:eabfaa878ced
4.7 KiB
text/x-c
Add: calendar date for Survey results
This means no heuristics is possible on around which date people
play the game.
This means no heuristics is possible on around which date people
play the game.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6123:049e9624d068 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r27166:64e04a3ef9b1 r24748:92d09bdc2347 r8264:d493cb51fe8a r8140:9424f012f6a2 r27781:923f26436fb8 r27781:923f26436fb8 r27781:923f26436fb8 r20104:fbf35626b02a r20104:fbf35626b02a r20105:48cafa26920c r20105:48cafa26920c r20105:48cafa26920c r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20108:f9a517049d66 r20108:f9a517049d66 r22979:c46ed593209d r23136:e0ce56841050 r23751:b428e92e20c4 r23751:b428e92e20c4 r23751:b428e92e20c4 r24187:093fac754f65 r24829:e925581ffd6a r24981:d50683e14a6d r20104:fbf35626b02a r20104:fbf35626b02a r5475:3f5cd13d1b63 r18845:66bf168f1100 r6248:b940b09d7ab8 r27737:728d55b97775 r25466:831c10b429e5 r27166:64e04a3ef9b1 r25466:831c10b429e5 r25466:831c10b429e5 r27636:dd08900a2d5c r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r18845:66bf168f1100 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r18845:66bf168f1100 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r27737:728d55b97775 r27636:dd08900a2d5c r24748:92d09bdc2347 r24748:92d09bdc2347 r6248:b940b09d7ab8 r5475:3f5cd13d1b63 r20104:fbf35626b02a r5475:3f5cd13d1b63 r11363:6906c490a00e r20104:fbf35626b02a r16949:23f78f8218cd r5475:3f5cd13d1b63 r27737:728d55b97775 r6379:6ae45e3edf80 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 | /*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file currency.h Functions to handle different currencies. */
#ifndef CURRENCY_H
#define CURRENCY_H
#include "timer/timer_game_calendar.h"
#include "string_func.h"
#include "strings_type.h"
static constexpr TimerGameCalendar::Year CF_NOEURO = 0; ///< Currency never switches to the Euro (as far as known).
static constexpr TimerGameCalendar::Year CF_ISEURO = 1; ///< Currency _is_ the Euro.
static constexpr TimerGameCalendar::Year MIN_EURO_YEAR = 2000; ///< The earliest year custom currencies may switch to the Euro.
/**
* This enum gives the currencies a unique id which must be maintained for
* savegame compatibility and in order to refer to them quickly, especially
* for referencing the custom one.
*/
enum Currencies {
CURRENCY_GBP, ///< British Pound
CURRENCY_USD, ///< US Dollar
CURRENCY_EUR, ///< Euro
CURRENCY_JPY, ///< Japanese Yen
CURRENCY_ATS, ///< Austrian Schilling
CURRENCY_BEF, ///< Belgian Franc
CURRENCY_CHF, ///< Swiss Franc
CURRENCY_CZK, ///< Czech Koruna
CURRENCY_DEM, ///< Deutsche Mark
CURRENCY_DKK, ///< Danish Krona
CURRENCY_ESP, ///< Spanish Peseta
CURRENCY_FIM, ///< Finish Markka
CURRENCY_FRF, ///< French Franc
CURRENCY_GRD, ///< Greek Drachma
CURRENCY_HUF, ///< Hungarian Forint
CURRENCY_ISK, ///< Icelandic Krona
CURRENCY_ITL, ///< Italian Lira
CURRENCY_NLG, ///< Dutch Gulden
CURRENCY_NOK, ///< Norwegian Krone
CURRENCY_PLN, ///< Polish Zloty
CURRENCY_RON, ///< Romenian Leu
CURRENCY_RUR, ///< Russian Rouble
CURRENCY_SIT, ///< Slovenian Tolar
CURRENCY_SEK, ///< Swedish Krona
CURRENCY_YTL, ///< Turkish Lira
CURRENCY_SKK, ///< Slovak Kornuna
CURRENCY_BRL, ///< Brazilian Real
CURRENCY_EEK, ///< Estonian Krooni
CURRENCY_LTL, ///< Lithuanian Litas
CURRENCY_KRW, ///< South Korean Won
CURRENCY_ZAR, ///< South African Rand
CURRENCY_CUSTOM, ///< Custom currency
CURRENCY_GEL, ///< Georgian Lari
CURRENCY_IRR, ///< Iranian Rial
CURRENCY_RUB, ///< New Russian Ruble
CURRENCY_MXN, ///< Mexican Peso
CURRENCY_NTD, ///< New Taiwan Dollar
CURRENCY_CNY, ///< Chinese Renminbi
CURRENCY_HKD, ///< Hong Kong Dollar
CURRENCY_INR, ///< Indian Rupee
CURRENCY_IDR, ///< Indonesian Rupiah
CURRENCY_MYR, ///< Malaysian Ringgit
CURRENCY_END, ///< always the last item
};
/** Specification of a currency. */
struct CurrencySpec {
uint16_t rate; ///< The conversion rate compared to the base currency.
std::string separator; ///< The thousands separator for this currency.
TimerGameCalendar::Year to_euro; ///< Year of switching to the Euro. May also be #CF_NOEURO or #CF_ISEURO.
std::string prefix; ///< Prefix to apply when formatting money in this currency.
std::string suffix; ///< Suffix to apply when formatting money in this currency.
std::string code; ///< 3 letter untranslated code to identify the currency.
/**
* The currency symbol is represented by two possible values, prefix and suffix
* Usage of one or the other is determined by #symbol_pos.
* 0 = prefix
* 1 = suffix
* 2 = both : Special case only for custom currency.
* It is not a spec from Newgrf,
* rather a way to let users do what they want with custom currency
*/
byte symbol_pos;
StringID name;
CurrencySpec() = default;
CurrencySpec(uint16_t rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, byte symbol_pos, StringID name) :
rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), code(code), symbol_pos(symbol_pos), name(name)
{
}
};
extern CurrencySpec _currency_specs[CURRENCY_END];
/* XXX small hack, but makes the rest of the code a bit nicer to read */
#define _custom_currency (_currency_specs[CURRENCY_CUSTOM])
#define _currency ((const CurrencySpec*)&_currency_specs[GetGameSettings().locale.currency])
uint64_t GetMaskOfAllowedCurrencies();
void ResetCurrencies(bool preserve_custom = true);
byte GetNewgrfCurrencyIdConverted(byte grfcurr_id);
#endif /* CURRENCY_H */
|