summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--currency.c94
-rw-r--r--currency.h23
-rw-r--r--economy.c17
-rw-r--r--settings.c2
-rw-r--r--settings_gui.c4
-rw-r--r--strings.c34
-rw-r--r--strings.h1
-rw-r--r--table/currency.h34
-rw-r--r--variables.h15
10 files changed, 122 insertions, 103 deletions
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;