mirror of https://github.com/OpenTTD/OpenTTD
(svn r2815) Store the currency information in one central place instead of scattering it in several unrelated files
parent
4f15ada6cd
commit
baca040df0
1
Makefile
1
Makefile
|
@ -591,6 +591,7 @@ C_SOURCES += clear_cmd.c
|
||||||
C_SOURCES += command.c
|
C_SOURCES += command.c
|
||||||
C_SOURCES += console.c
|
C_SOURCES += console.c
|
||||||
C_SOURCES += console_cmds.c
|
C_SOURCES += console_cmds.c
|
||||||
|
C_SOURCES += currency.c
|
||||||
C_SOURCES += debug.c
|
C_SOURCES += debug.c
|
||||||
C_SOURCES += dedicated.c
|
C_SOURCES += dedicated.c
|
||||||
C_SOURCES += depot.c
|
C_SOURCES += depot.c
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
/* $Id$ */
|
||||||
|
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "openttd.h"
|
||||||
|
#include "currency.h"
|
||||||
|
#include "variables.h"
|
||||||
|
#include "table/strings.h"
|
||||||
|
|
||||||
|
// exchange rate prefix
|
||||||
|
// | separator | postfix
|
||||||
|
// | | Euro year | |
|
||||||
|
// | | | | |
|
||||||
|
CurrencySpec _currency_specs[] = {
|
||||||
|
{ 1, ',', CF_NOEURO, "\xA3", "" }, // british pounds
|
||||||
|
{ 2, ',', CF_NOEURO, "$", "" }, // us dollars
|
||||||
|
{ 2, ',', CF_ISEURO, "¤", "" }, // Euro
|
||||||
|
{ 200, ',', CF_NOEURO, "\xA5", "" }, // yen
|
||||||
|
{ 19, ',', 2002, "", " S." }, // austrian schilling
|
||||||
|
{ 57, ',', 2002, "BEF ", "" }, // belgian franc
|
||||||
|
{ 2, ',', CF_NOEURO, "CHF ", "" }, // swiss franc
|
||||||
|
{ 50, ',', CF_NOEURO, "", " Kc" }, // czech koruna // TODO: Should use the "c" with an upside down "^"
|
||||||
|
{ 4, '.', 2002, "DM ", "" }, // deutsche mark
|
||||||
|
{ 10, '.', CF_NOEURO, "", " kr" }, // danish krone
|
||||||
|
{ 200, '.', 2002, "Pts ", "" }, // spanish pesetas
|
||||||
|
{ 8, ',', 2002, "", " MK" }, // finnish markka
|
||||||
|
{ 10, '.', 2002, "FF ", "" }, // french francs
|
||||||
|
{ 480, ',', 2002, "", "Dr." }, // greek drachma
|
||||||
|
{ 376, ',', 2002, "", " Ft" }, // hungarian forint
|
||||||
|
{ 130, '.', CF_NOEURO, "", " Kr" }, // icelandic krona
|
||||||
|
{ 2730, ',', 2002, "", " L." }, // italian lira
|
||||||
|
{ 3, ',', 2002, "NLG ", "" }, // dutch gulden
|
||||||
|
{ 11, '.', CF_NOEURO, "", " Kr" }, // norwegian krone
|
||||||
|
{ 6, ' ', CF_NOEURO, "", " zl" }, // polish zloty
|
||||||
|
{ 6, '.', CF_NOEURO, "", " Lei" }, // romanian Lei
|
||||||
|
{ 5, ' ', CF_NOEURO, "", " p" }, // russian rouble
|
||||||
|
{ 13, '.', CF_NOEURO, "", " Kr" }, // swedish krona
|
||||||
|
{ 1, ' ', CF_NOEURO, "", "" }, // custom currency
|
||||||
|
};
|
||||||
|
|
||||||
|
const StringID _currency_string_list[] = {
|
||||||
|
STR_CURR_GBP,
|
||||||
|
STR_CURR_USD,
|
||||||
|
STR_CURR_EUR,
|
||||||
|
STR_CURR_YEN,
|
||||||
|
STR_CURR_ATS,
|
||||||
|
STR_CURR_BEF,
|
||||||
|
STR_CURR_CHF,
|
||||||
|
STR_CURR_CZK,
|
||||||
|
STR_CURR_DEM,
|
||||||
|
STR_CURR_DKK,
|
||||||
|
STR_CURR_ESP,
|
||||||
|
STR_CURR_FIM,
|
||||||
|
STR_CURR_FRF,
|
||||||
|
STR_CURR_GRD,
|
||||||
|
STR_CURR_HUF,
|
||||||
|
STR_CURR_ISK,
|
||||||
|
STR_CURR_ITL,
|
||||||
|
STR_CURR_NLG,
|
||||||
|
STR_CURR_NOK,
|
||||||
|
STR_CURR_PLN,
|
||||||
|
STR_CURR_ROL,
|
||||||
|
STR_CURR_RUR,
|
||||||
|
STR_CURR_SEK,
|
||||||
|
STR_CURR_CUSTOM,
|
||||||
|
INVALID_STRING_ID
|
||||||
|
};
|
||||||
|
|
||||||
|
// NOTE: Make sure both lists are in the same order
|
||||||
|
// + 1 string list terminator
|
||||||
|
assert_compile(lengthof(_currency_specs) + 1 == lengthof(_currency_string_list));
|
||||||
|
|
||||||
|
|
||||||
|
// get a mask of the allowed currencies depending on the year
|
||||||
|
uint GetMaskOfAllowedCurrencies(void)
|
||||||
|
{
|
||||||
|
uint mask = 0;
|
||||||
|
uint i;
|
||||||
|
|
||||||
|
for (i = 0; i != lengthof(_currency_specs); i++) {
|
||||||
|
uint16 to_euro = _currency_specs[i].to_euro;
|
||||||
|
|
||||||
|
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= to_euro - MAX_YEAR_BEGIN_REAL) continue;
|
||||||
|
if (to_euro == CF_ISEURO && _cur_year < 2000 - MAX_YEAR_BEGIN_REAL) continue;
|
||||||
|
mask |= (1 << i);
|
||||||
|
}
|
||||||
|
mask |= (1 << 23); // always allow custom currency
|
||||||
|
return mask;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint GetCurrentCurrencyRate(void)
|
||||||
|
{
|
||||||
|
return _currency_specs[_opt_ptr->currency].rate;
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef CURRENCY_H
|
||||||
|
#define CURRENCY_H
|
||||||
|
|
||||||
|
enum {
|
||||||
|
CF_NOEURO = 0,
|
||||||
|
CF_ISEURO = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16 rate;
|
||||||
|
char separator;
|
||||||
|
uint16 to_euro;
|
||||||
|
char prefix[16];
|
||||||
|
char suffix[16];
|
||||||
|
} CurrencySpec;
|
||||||
|
|
||||||
|
extern CurrencySpec _currency_specs[];
|
||||||
|
extern const StringID _currency_string_list[];
|
||||||
|
|
||||||
|
uint GetMaskOfAllowedCurrencies(void);
|
||||||
|
uint GetCurrentCurrencyRate(void);
|
||||||
|
|
||||||
|
#endif
|
17
economy.c
17
economy.c
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "openttd.h"
|
#include "openttd.h"
|
||||||
|
#include "currency.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "strings.h" // XXX InjectDParam()
|
#include "strings.h" // XXX InjectDParam()
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
@ -41,22 +42,6 @@ const ScoreInfo _score_info[] = {
|
||||||
|
|
||||||
int _score_part[MAX_PLAYERS][NUM_SCORE];
|
int _score_part[MAX_PLAYERS][NUM_SCORE];
|
||||||
|
|
||||||
|
|
||||||
// get a mask of the allowed currencies depending on the year
|
|
||||||
uint GetMaskOfAllowedCurrencies(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
uint mask = 0;
|
|
||||||
for (i = 0; i != lengthof(_currency_specs); i++) {
|
|
||||||
uint16 to_euro = _currency_specs[i].to_euro;
|
|
||||||
if (i == 23) mask |= (1 << 23); // always allow custom currency
|
|
||||||
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= (to_euro-MAX_YEAR_BEGIN_REAL)) continue;
|
|
||||||
if (_cur_year < (2000-MAX_YEAR_BEGIN_REAL) && (to_euro == CF_ISEURO)) continue;
|
|
||||||
mask |= (1 << i);
|
|
||||||
}
|
|
||||||
return mask;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CheckSwitchToEuro(void)
|
void CheckSwitchToEuro(void)
|
||||||
{
|
{
|
||||||
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
|
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "openttd.h"
|
#include "openttd.h"
|
||||||
|
#include "currency.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "screenshot.h"
|
#include "screenshot.h"
|
||||||
|
@ -9,7 +10,6 @@
|
||||||
#include "spritecache.h"
|
#include "spritecache.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "table/currency.h"
|
|
||||||
#include "network.h"
|
#include "network.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "openttd.h"
|
#include "openttd.h"
|
||||||
|
#include "currency.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "strings.h" // XXX GetCurrentCurrencyRate()
|
#include "strings.h" // XXX GetCurrentCurrencyRate()
|
||||||
|
@ -23,9 +24,6 @@ static uint32 _difficulty_click_a;
|
||||||
static uint32 _difficulty_click_b;
|
static uint32 _difficulty_click_b;
|
||||||
static byte _difficulty_timeout;
|
static byte _difficulty_timeout;
|
||||||
|
|
||||||
extern const StringID _currency_string_list[];
|
|
||||||
extern uint GetMaskOfAllowedCurrencies(void);
|
|
||||||
|
|
||||||
static const StringID _distances_dropdown[] = {
|
static const StringID _distances_dropdown[] = {
|
||||||
STR_0139_IMPERIAL_MILES,
|
STR_0139_IMPERIAL_MILES,
|
||||||
STR_013A_METRIC_KILOMETERS,
|
STR_013A_METRIC_KILOMETERS,
|
||||||
|
|
34
strings.c
34
strings.c
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
#include "openttd.h"
|
#include "openttd.h"
|
||||||
|
#include "currency.h"
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "string.h"
|
#include "string.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
|
@ -43,34 +44,6 @@ static LanguagePack *_langpack;
|
||||||
static uint _langtab_num[32]; // Offset into langpack offs
|
static uint _langtab_num[32]; // Offset into langpack offs
|
||||||
static uint _langtab_start[32]; // Offset into langpack offs
|
static uint _langtab_start[32]; // Offset into langpack offs
|
||||||
|
|
||||||
const StringID _currency_string_list[] = {
|
|
||||||
STR_CURR_GBP,
|
|
||||||
STR_CURR_USD,
|
|
||||||
STR_CURR_EUR,
|
|
||||||
STR_CURR_YEN,
|
|
||||||
STR_CURR_ATS,
|
|
||||||
STR_CURR_BEF,
|
|
||||||
STR_CURR_CHF,
|
|
||||||
STR_CURR_CZK,
|
|
||||||
STR_CURR_DEM,
|
|
||||||
STR_CURR_DKK,
|
|
||||||
STR_CURR_ESP,
|
|
||||||
STR_CURR_FIM,
|
|
||||||
STR_CURR_FRF,
|
|
||||||
STR_CURR_GRD,
|
|
||||||
STR_CURR_HUF,
|
|
||||||
STR_CURR_ISK,
|
|
||||||
STR_CURR_ITL,
|
|
||||||
STR_CURR_NLG,
|
|
||||||
STR_CURR_NOK,
|
|
||||||
STR_CURR_PLN,
|
|
||||||
STR_CURR_ROL,
|
|
||||||
STR_CURR_RUR,
|
|
||||||
STR_CURR_SEK,
|
|
||||||
STR_CURR_CUSTOM,
|
|
||||||
INVALID_STRING_ID
|
|
||||||
};
|
|
||||||
|
|
||||||
static const StringID _cargo_string_list[NUM_LANDSCAPE][NUM_CARGO] = {
|
static const StringID _cargo_string_list[NUM_LANDSCAPE][NUM_CARGO] = {
|
||||||
{ /* LT_NORMAL */
|
{ /* LT_NORMAL */
|
||||||
STR_PASSENGERS,
|
STR_PASSENGERS,
|
||||||
|
@ -372,11 +345,6 @@ static char *FormatTinyDate(char *buff, uint16 number)
|
||||||
return buff;
|
return buff;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint GetCurrentCurrencyRate(void)
|
|
||||||
{
|
|
||||||
return _currency_specs[_opt_ptr->currency].rate;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, int64 number, bool compact)
|
static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, int64 number, bool compact)
|
||||||
{
|
{
|
||||||
const char *s;
|
const char *s;
|
||||||
|
|
|
@ -18,6 +18,5 @@ extern char _userstring[128];
|
||||||
|
|
||||||
void InjectDParam(int amount);
|
void InjectDParam(int amount);
|
||||||
int32 GetParamInt32(void);
|
int32 GetParamInt32(void);
|
||||||
uint GetCurrentCurrencyRate(void);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
/* $Id$ */
|
|
||||||
|
|
||||||
// exchange rate prefix
|
|
||||||
// | separator | postfix
|
|
||||||
// | | Euro year | |
|
|
||||||
// | | | | |
|
|
||||||
CurrencySpec _currency_specs[] = {
|
|
||||||
{ 1, ',', CF_NOEURO, "\xA3", "" }, // british pounds
|
|
||||||
{ 2, ',', CF_NOEURO, "$", "" }, // us dollars
|
|
||||||
{ 2, ',', CF_ISEURO, "¤", "" }, // Euro
|
|
||||||
{ 200, ',', CF_NOEURO, "\xA5", "" }, // yen
|
|
||||||
|
|
||||||
{ 19, ',', 2002, "", " S." }, // austrian schilling
|
|
||||||
{ 57, ',', 2002, "BEF ", "" }, // belgian franc
|
|
||||||
{ 2, ',', CF_NOEURO,"CHF ", "" }, // swiss franc
|
|
||||||
{ 50, ',', CF_NOEURO, "", " Kc" }, // czech koruna // TODO: Should use the "c" with an upside down "^"
|
|
||||||
{ 4, '.', 2002, "DM ", "" }, // deutsche mark
|
|
||||||
{ 10, '.', CF_NOEURO, "", " kr" }, // danish krone
|
|
||||||
{ 200, '.', 2002, "Pts ", "" }, // spanish pesetas
|
|
||||||
{ 8, ',', 2002, "", " MK" }, // finnish markka
|
|
||||||
{ 10, '.', 2002, "FF ", "" }, // french francs
|
|
||||||
{ 480, ',', 2002, "", "Dr." }, // greek drachma
|
|
||||||
{ 376, ',', 2002, "", " Ft" }, // forint
|
|
||||||
{ 130, '.', CF_NOEURO, "", " Kr" }, // icelandic krona
|
|
||||||
{ 2730,',', 2002, "", " L." }, // italian lira
|
|
||||||
{ 3, ',', 2002, "NLG ", "" }, // dutch gulden
|
|
||||||
{ 11, '.', CF_NOEURO, "", " Kr" }, // norwegian krone
|
|
||||||
{ 6, ' ', CF_NOEURO, "", " zl" }, // polish zloty
|
|
||||||
{ 6, '.', CF_NOEURO, ""," Lei" }, // romanian Lei
|
|
||||||
{ 5, ' ', CF_NOEURO, "", " p" }, // russian rouble
|
|
||||||
{ 13, '.', CF_NOEURO, "", " Kr" }, // swedish krona
|
|
||||||
{ 1, ' ', CF_NOEURO, "", "" }, // custom currency
|
|
||||||
};
|
|
||||||
|
|
15
variables.h
15
variables.h
|
@ -37,21 +37,6 @@ VARDEF GameOptions _opt_newgame;
|
||||||
// Pointer to one of the two _opt OR _opt_newgame structs
|
// Pointer to one of the two _opt OR _opt_newgame structs
|
||||||
VARDEF GameOptions *_opt_ptr;
|
VARDEF GameOptions *_opt_ptr;
|
||||||
|
|
||||||
enum {
|
|
||||||
CF_NOEURO = 0,
|
|
||||||
CF_ISEURO = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint16 rate;
|
|
||||||
char separator;
|
|
||||||
uint16 to_euro;
|
|
||||||
char prefix[16];
|
|
||||||
char suffix[16];
|
|
||||||
} CurrencySpec;
|
|
||||||
|
|
||||||
VARDEF CurrencySpec _currency_specs[24];
|
|
||||||
|
|
||||||
// Current date
|
// Current date
|
||||||
VARDEF uint16 _date;
|
VARDEF uint16 _date;
|
||||||
VARDEF uint16 _date_fract;
|
VARDEF uint16 _date_fract;
|
||||||
|
|
Loading…
Reference in New Issue