summaryrefslogtreecommitdiff
path: root/currency.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2005-08-06 14:59:54 +0000
committertron <tron@openttd.org>2005-08-06 14:59:54 +0000
commitbaca040df07df8d02e342ae1fbc2357b2e116062 (patch)
treeabe83980b6dfec97b5a7f8cb50bc2959e2656c88 /currency.c
parent4f15ada6cdd2b322f8f2b7a0ad41be7c2cda1192 (diff)
downloadopenttd-baca040df07df8d02e342ae1fbc2357b2e116062.tar.xz
(svn r2815) Store the currency information in one central place instead of scattering it in several unrelated files
Diffstat (limited to 'currency.c')
-rw-r--r--currency.c94
1 files changed, 94 insertions, 0 deletions
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;
+}