(svn r1222) Currency cleanup. Changed some currency symbols according to forum suggestions (thx ChrisCF) and rearranged the currencies alphabetically (except for the major ones).

This commit is contained in:
dominik 2004-12-22 16:54:55 +00:00
parent 5c7decc27d
commit b7f71b026d
6 changed files with 112 additions and 89 deletions

View File

@ -18,6 +18,31 @@
#include "engine.h"
#include "network_data.h"
// get a mask of the allowed currencies depending on the year
uint GetMaskOfAllowedCurrencies()
{
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-1920)) continue;
if (_cur_year < (2000-1920) && (to_euro == CF_ISEURO)) continue;
mask |= (1 << i);
}
return mask;
}
void CheckSwitchToEuro()
{
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
_currency_specs[_opt.currency].to_euro != CF_ISEURO &&
_cur_year >= (_currency_specs[_opt.currency].to_euro-1920)) {
_opt.currency = 2; // this is the index of euro above.
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
}
}
void UpdatePlayerHouse(Player *p, uint score)
{
byte val;

View File

@ -868,30 +868,31 @@ STR_TOWNNAME_ROMANIAN :Romanian
STR_TOWNNAME_CZECH :Czech
############ end of townname region
STR_CURR_POUNDS :Pounds ({POUNDSIGN})
STR_CURR_DOLLARS :Dollars ($)
STR_CURR_FF :Franc (FF)
STR_CURR_DM :Deutschmark (DM)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_PT :Peseta (Pt)
STR_CURR_FT :Hungarian Forint (Ft)
STR_CURR_ZL :Polish Zloty (zl)
STR_CURR_ATS :Austrian Shilling (ATS)
STR_CURR_BEF :Belgian Franc (BEF)
STR_CURR_DKK :Danish Krone (DKK)
STR_CURR_FIM :Finnish Markka (FIM)
STR_CURR_GRD :Greek Drachma (GRD)
STR_CURR_CHF :Swiss Franc (CHF)
STR_CURR_NLG :Dutch Guilder (NLG)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_CUSTOM :Custom...
STR_CURR_SEK :Swedish Krona (SEK)
STR_CURR_RUR :Russian Rubel (rur)
STR_CURR_CZK :Czech Koruna (CZK)
STR_CURR_ISK :Icelandic Krona (ISK)
STR_CURR_NOK :Norwegian Krone (NOK)
STR_CURR_ROL :Romanian Leu (Lei)
STR_CURR_EUR :Euro (¤)
STR_CURR_GBP :Pounds ({POUNDSIGN})
STR_CURR_USD :Dollars ($)
STR_CURR_EUR :Euro (¤)
STR_CURR_YEN :Yen ({YENSIGN})
STR_CURR_ATS :Austrian Shilling (ATS)
STR_CURR_BEF :Belgian Franc (BEF)
STR_CURR_CHF :Swiss Franc (CHF)
STR_CURR_CZK :Czech Koruna (CZK)
STR_CURR_DEM :Deutschmark (DEM)
STR_CURR_DKK :Danish Krone (DKK)
STR_CURR_ESP :Peseta (ESP)
STR_CURR_FIM :Finnish Markka (FIM)
STR_CURR_FRF :Franc (FRF)
STR_CURR_GRD :Greek Drachma (GRD)
STR_CURR_HUF :Hungarian Forint (HUF)
STR_CURR_ISK :Icelandic Krona (ISK)
STR_CURR_ITL :Italian Lira (ITL)
STR_CURR_NLG :Dutch Guilder (NLG)
STR_CURR_NOK :Norwegian Krone (NOK)
STR_CURR_PLN :Polish Zloty (PLN)
STR_CURR_ROL :Romanian Leu (ROL)
STR_CURR_RUR :Russian Rubles (RUR)
STR_CURR_SEK :Swedish Krona (SEK)
STR_CURR_CUSTOM :Custom...
STR_OPTIONS_LANG :{BLACK}Language
STR_OPTIONS_LANG_CBO :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}

View File

@ -9,7 +9,7 @@
enum {
SAVEGAME_MAJOR_VERSION = 4,
SAVEGAME_MINOR_VERSION = 1,
SAVEGAME_MINOR_VERSION = 2,
SAVEGAME_LOADABLE_VERSION = (SAVEGAME_MAJOR_VERSION << 8) + SAVEGAME_MINOR_VERSION
};

View File

@ -33,29 +33,29 @@ typedef struct {
} LanguagePackHeader;
const uint16 _currency_string_list[] = {
STR_CURR_POUNDS,
STR_CURR_DOLLARS,
STR_CURR_FF,
STR_CURR_DM,
STR_CURR_GBP,
STR_CURR_USD,
STR_CURR_EUR,
STR_CURR_YEN,
STR_CURR_PT,
STR_CURR_FT,
STR_CURR_ZL,
STR_CURR_ATS,
STR_CURR_BEF,
STR_CURR_DKK,
STR_CURR_FIM,
STR_CURR_GRD,
STR_CURR_CHF,
STR_CURR_NLG,
STR_CURR_ITL,
STR_CURR_SEK,
STR_CURR_RUR,
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_EUR,
STR_CURR_PLN,
STR_CURR_ROL,
STR_CURR_RUR,
STR_CURR_SEK,
STR_CURR_CUSTOM,
INVALID_STRING_ID
};
@ -67,31 +67,6 @@ static const uint16 _cargo_string_list[NUM_LANDSCAPE][NUM_CARGO] = {
/* LT_CANDY */ {STR_PASSENGERS, STR_TONS, STR_BAGS, STR_NOTHING, STR_NOTHING, STR_TONS, STR_TONS, STR_LITERS, STR_TONS, STR_NOTHING, STR_LITERS, STR_NOTHING}
};
// get a mask of the allowed currencies depending on the year
uint GetMaskOfAllowedCurrencies()
{
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-1920)) continue;
if (_cur_year < (2000-1920) && (to_euro == CF_ISEURO)) continue;
mask |= (1 << i);
}
return mask;
}
void CheckSwitchToEuro()
{
if (_currency_specs[_opt.currency].to_euro != CF_NOEURO &&
_currency_specs[_opt.currency].to_euro != CF_ISEURO &&
_cur_year >= (_currency_specs[_opt.currency].to_euro-1920)) {
_opt.currency = 21; // this is the index of euro above.
AddNewsItem(STR_EURO_INTRODUCE, NEWS_FLAGS(NM_NORMAL,0,NT_ECONOMY,0), 0, 0);
}
}
static byte *str_cat(byte *dst, const byte *src)
{
while ( (*dst++ = *src++) != 0) {}

View File

@ -1,26 +1,30 @@
// exchange rate prefix
// | separator | postfix
// | | Euro year | |
// | | | | |
CurrencySpec _currency_specs[] = {
{ 1, ',', CF_NOEURO, "\xA3", "" }, // british pounds
{ 2, ',', CF_NOEURO, "$", "" }, // us dollars
{ 10, '.', 2002, "FF ", "" }, // french francs
{ 4, '.', 2002, "DM ", "" }, // deutsche mark
{ 200, ',', CF_NOEURO, "\xA5", "" }, // yen
{ 200, '.', 2002, "Pt", "" }, // spanish pesetas
{ 376, ',', 2002, "", " Ft" },
{ 6, ' ', CF_NOEURO, "", " zl" },
{ 19, ',', 2002, "ATS ", "" },
{ 57, ',', 2002, "BEF ", "" },
{ 10, '.', CF_NOEURO, "", " kr" },
{ 8, ',', 2002, "FIM ", "" },
{ 480, ',', 2002, "GRD ", "" },
{ 2, ',', CF_NOEURO, "CHF ", "" },
{ 3, ',', 2002, "NLG ", "" },
{ 2730,',', 2002, "ITL ", "" },
{ 13, '.', CF_NOEURO, "", " kr" },
{ 5, ' ', CF_NOEURO, "", " rur" },
{ 50, ',', CF_NOEURO, "", " Kc" },
{ 130, '.', CF_NOEURO, "", " kr" },
{ 11, '.', CF_NOEURO, "", " kr" },
{ 2, ',', CF_ISEURO, "¤", "" },
{ 6, '.', CF_NOEURO, "", " Lei" },
{ 1, ',', CF_NOEURO, "\xA3", "" }, // british pounds
{ 2, ',', CF_NOEURO, "$", "" }, // us dollars
{ 2, ',', CF_ISEURO, "¤", "" }, // Euro
{ 200, ',', CF_NOEURO, "\xA5", "" }, // yen
{ 57, ',', 2002, "BEF ", "" }, // belgian franc
{ 2, ',', CF_NOEURO,"CHF ", "" }, // swiss franc
{ 480, ',', 2002, "", "Dr." }, // greek drachma
{ 4, '.', 2002, "DM ", "" }, // deutsche mark
{ 10, '.', 2002, "FF ", "" }, // french francs
{ 376, ',', 2002, "", " Ft" }, // forint
{ 50, ',', CF_NOEURO, "", " Kc" }, // czech koruna // TODO: Should use the "c" with an upside down "^"
{ 13, '.', CF_NOEURO, "", " Kr" }, // swedish krona
{ 130, '.', CF_NOEURO, "", " Kr" }, // icelandic krona
{ 11, '.', CF_NOEURO, "", " Kr" }, // norwegian krone
{ 10, '.', CF_NOEURO, "", " kr" }, // danish krone
{ 2730,',', 2002, "", " L." }, // italian lira
{ 6, '.', CF_NOEURO, ""," Lei" }, // romanian Lei
{ 8, ',', 2002, "", " MK" }, // finnish markka
{ 3, ',', 2002, "NLG ", "" }, // dutch gulden
{ 5, ' ', CF_NOEURO, "", " p" }, // russian rouble
{ 200, '.', 2002, "Pts ", "" }, // spanish pesetas
{ 19, ',', 2002, "", " S." }, // austrian schilling
{ 6, ' ', CF_NOEURO, "", " zl" }, // polish zloty
{ 1, ' ', CF_NOEURO, "", "" }, // custom currency
};

18
ttd.c
View File

@ -1185,6 +1185,19 @@ void UpdateExclusiveRights()
*/
}
byte covert_currency[] = {
0, 1, 12, 8, 3,
10, 14, 19, 4, 5,
9, 11, 13, 6, 17,
16, 22, 21, 7, 15,
18, 2, 20, };
// since savegame version 4.2 the currencies are arranged differently
void UpdateCurrencies()
{
_opt.currency = covert_currency[_opt.currency];
}
extern void UpdateOldAircraft();
bool AfterLoadGame(uint version)
@ -1202,6 +1215,11 @@ bool AfterLoadGame(uint version)
UpdateExclusiveRights();
}
// from version 4.2 of the savegame, currencies are in a different order
if (version <= 0x401) {
UpdateCurrencies();
}
// convert road side to my format.
if (_opt.road_side) _opt.road_side = 1;