From baca040df07df8d02e342ae1fbc2357b2e116062 Mon Sep 17 00:00:00 2001 From: tron Date: Sat, 6 Aug 2005 14:59:54 +0000 Subject: (svn r2815) Store the currency information in one central place instead of scattering it in several unrelated files --- Makefile | 1 + currency.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ currency.h | 23 ++++++++++++++ economy.c | 17 +--------- settings.c | 2 +- settings_gui.c | 4 +-- strings.c | 34 +------------------- strings.h | 1 - table/currency.h | 34 -------------------- variables.h | 15 --------- 10 files changed, 122 insertions(+), 103 deletions(-) create mode 100644 currency.c create mode 100644 currency.h delete mode 100644 table/currency.h diff --git a/Makefile b/Makefile index 49a52f2da..8eefe09f9 100644 --- a/Makefile +++ b/Makefile @@ -591,6 +591,7 @@ C_SOURCES += clear_cmd.c C_SOURCES += command.c C_SOURCES += console.c C_SOURCES += console_cmds.c +C_SOURCES += currency.c C_SOURCES += debug.c C_SOURCES += dedicated.c C_SOURCES += depot.c diff --git a/currency.c b/currency.c new file mode 100644 index 000000000..29a698bd3 --- /dev/null +++ b/currency.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; +} diff --git a/currency.h b/currency.h new file mode 100644 index 000000000..bd13d95fd --- /dev/null +++ b/currency.h @@ -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 diff --git a/economy.c b/economy.c index 70201fbdc..8bbc13c49 100644 --- a/economy.c +++ b/economy.c @@ -2,6 +2,7 @@ #include "stdafx.h" #include "openttd.h" +#include "currency.h" #include "functions.h" #include "strings.h" // XXX InjectDParam() #include "table/strings.h" @@ -41,22 +42,6 @@ const ScoreInfo _score_info[] = { 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) { if (_currency_specs[_opt.currency].to_euro != CF_NOEURO && diff --git a/settings.c b/settings.c index 6f2a51962..37f8872d5 100644 --- a/settings.c +++ b/settings.c @@ -2,6 +2,7 @@ #include "stdafx.h" #include "openttd.h" +#include "currency.h" #include "functions.h" #include "macros.h" #include "screenshot.h" @@ -9,7 +10,6 @@ #include "spritecache.h" #include "string.h" #include "variables.h" -#include "table/currency.h" #include "network.h" #include "settings.h" diff --git a/settings_gui.c b/settings_gui.c index c7aae46a2..6d50c7259 100644 --- a/settings_gui.c +++ b/settings_gui.c @@ -2,6 +2,7 @@ #include "stdafx.h" #include "openttd.h" +#include "currency.h" #include "functions.h" #include "string.h" #include "strings.h" // XXX GetCurrentCurrencyRate() @@ -23,9 +24,6 @@ static uint32 _difficulty_click_a; static uint32 _difficulty_click_b; static byte _difficulty_timeout; -extern const StringID _currency_string_list[]; -extern uint GetMaskOfAllowedCurrencies(void); - static const StringID _distances_dropdown[] = { STR_0139_IMPERIAL_MILES, STR_013A_METRIC_KILOMETERS, diff --git a/strings.c b/strings.c index eb361fdcc..72709dae2 100644 --- a/strings.c +++ b/strings.c @@ -2,6 +2,7 @@ #include "stdafx.h" #include "openttd.h" +#include "currency.h" #include "functions.h" #include "string.h" #include "strings.h" @@ -43,34 +44,6 @@ static LanguagePack *_langpack; static uint _langtab_num[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] = { { /* LT_NORMAL */ STR_PASSENGERS, @@ -372,11 +345,6 @@ static char *FormatTinyDate(char *buff, uint16 number) return buff; } -uint GetCurrentCurrencyRate(void) -{ - return _currency_specs[_opt_ptr->currency].rate; -} - static char *FormatGenericCurrency(char *buff, const CurrencySpec *spec, int64 number, bool compact) { const char *s; diff --git a/strings.h b/strings.h index 6d76a39aa..6bb6a62e6 100644 --- a/strings.h +++ b/strings.h @@ -18,6 +18,5 @@ extern char _userstring[128]; void InjectDParam(int amount); int32 GetParamInt32(void); -uint GetCurrentCurrencyRate(void); #endif diff --git a/table/currency.h b/table/currency.h deleted file mode 100644 index 681019114..000000000 --- a/table/currency.h +++ /dev/null @@ -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 -}; - diff --git a/variables.h b/variables.h index 492d55457..530bfd47c 100644 --- a/variables.h +++ b/variables.h @@ -37,21 +37,6 @@ VARDEF GameOptions _opt_newgame; // Pointer to one of the two _opt OR _opt_newgame structs 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 VARDEF uint16 _date; VARDEF uint16 _date_fract; -- cgit v1.2.3-70-g09d2