mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 18:40:29 +00:00
Fix #11054: Prevent translation of currency codes.
Most languages stick with the 3-letter latin currency codes in the name string, however some translations are... clever... and use the currency symbol instead. Whilst this may look nice, it can cause issues with fonts as some scripts have a specific limited set of fonts which do not include these symbols. Instead, hard code the currency code list and add it when drawing the currency name.
This commit is contained in:
parent
d42a78f3e8
commit
9dd9b8ec74
112
src/currency.cpp
112
src/currency.cpp
@ -21,54 +21,54 @@
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
/* exchange rate prefix symbol_pos
|
||||
* | separator | postfix |
|
||||
* | | Euro year | | | name
|
||||
* | | | | | | | */
|
||||
/* exchange rate prefix code
|
||||
* | separator | postfix | symbol_pos
|
||||
* | | Euro year | | | | name
|
||||
* | | | | | | | | */
|
||||
/** The original currency specifications. */
|
||||
static const CurrencySpec origin_currency_specs[CURRENCY_END] = {
|
||||
{ 1, "", CF_NOEURO, u8"\u00a3", "", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound
|
||||
{ 2, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar
|
||||
{ 2, "", CF_ISEURO, u8"\u20ac", "", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro
|
||||
{ 220, "", CF_NOEURO, u8"\u00a5", "", 0, STR_GAME_OPTIONS_CURRENCY_JPY }, ///< japanese yen
|
||||
{ 27, "", 2002, "", NBSP "S.", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling
|
||||
{ 81, "", 2002, "BEF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc
|
||||
{ 2, "", CF_NOEURO, "CHF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc
|
||||
{ 41, "", CF_NOEURO, "", NBSP u8"K\u010d", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna
|
||||
{ 4, "", 2002, "DM" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark
|
||||
{ 11, "", CF_NOEURO, "", NBSP "kr", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone
|
||||
{ 333, "", 2002, "Pts" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish peseta
|
||||
{ 12, "", 2002, "", NBSP "mk", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka
|
||||
{ 13, "", 2002, "FF" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french franc
|
||||
{ 681, "", 2002, "", "Dr.", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma
|
||||
{ 378, "", CF_NOEURO, "", NBSP "Ft", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint
|
||||
{ 130, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona
|
||||
{ 3873, "", 2002, "", NBSP "L.", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira
|
||||
{ 4, "", 2002, "NLG" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden
|
||||
{ 12, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone
|
||||
{ 6, "", CF_NOEURO, "", NBSP u8"z\u0142", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty
|
||||
{ 5, "", CF_NOEURO, "", NBSP "Lei", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian leu
|
||||
{ 50, "", CF_NOEURO, "", NBSP "p", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble
|
||||
{ 479, "", 2007, "", NBSP "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar
|
||||
{ 13, "", CF_NOEURO, "", NBSP "Kr", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona
|
||||
{ 3, "", CF_NOEURO, "", NBSP "TL", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira
|
||||
{ 60, "", 2009, "", NBSP "Sk", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna
|
||||
{ 4, "", CF_NOEURO, "R$" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real
|
||||
{ 31, "", 2011, "", NBSP "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni
|
||||
{ 4, "", 2015, "", NBSP "Lt", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas
|
||||
{ 1850, "", CF_NOEURO, u8"\u20a9", "", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won
|
||||
{ 13, "", CF_NOEURO, "R" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand
|
||||
{ 1, "", CF_NOEURO, "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below)
|
||||
{ 3, "", CF_NOEURO, "", NBSP "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL }, ///< Georgian Lari
|
||||
{ 4901, "", CF_NOEURO, "", NBSP "Rls", 1, STR_GAME_OPTIONS_CURRENCY_IRR }, ///< Iranian Rial
|
||||
{ 80, "", CF_NOEURO, "", NBSP "rub", 1, STR_GAME_OPTIONS_CURRENCY_RUB }, ///< New Russian Ruble
|
||||
{ 24, "", CF_NOEURO, "$", "", 0, STR_GAME_OPTIONS_CURRENCY_MXN }, ///< Mexican peso
|
||||
{ 40, "", CF_NOEURO, "NTD" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_NTD }, ///< new taiwan dollar
|
||||
{ 8, "", CF_NOEURO, u8"\u00a5", "", 0, STR_GAME_OPTIONS_CURRENCY_CNY }, ///< chinese renminbi
|
||||
{ 10, "", CF_NOEURO, "HKD" NBSP, "", 0, STR_GAME_OPTIONS_CURRENCY_HKD }, ///< hong kong dollar
|
||||
{ 90, "", CF_NOEURO, u8"\u20b9", "", 0, STR_GAME_OPTIONS_CURRENCY_INR }, ///< Indian Rupee
|
||||
{ 19, "", CF_NOEURO, "Rp", "", 0, STR_GAME_OPTIONS_CURRENCY_IDR }, ///< Indonesian Rupiah
|
||||
{ 5, "", CF_NOEURO, "RM", "", 0, STR_GAME_OPTIONS_CURRENCY_MYR }, ///< Malaysian Ringgit
|
||||
{ 1, "", CF_NOEURO, u8"\u00a3", "", "GBP", 0, STR_GAME_OPTIONS_CURRENCY_GBP }, ///< british pound
|
||||
{ 2, "", CF_NOEURO, "$", "", "USD", 0, STR_GAME_OPTIONS_CURRENCY_USD }, ///< american dollar
|
||||
{ 2, "", CF_ISEURO, u8"\u20ac", "", "EUR", 0, STR_GAME_OPTIONS_CURRENCY_EUR }, ///< euro
|
||||
{ 220, "", CF_NOEURO, u8"\u00a5", "", "JPY", 0, STR_GAME_OPTIONS_CURRENCY_JPY }, ///< japanese yen
|
||||
{ 27, "", 2002, "", NBSP "S.", "ATS", 1, STR_GAME_OPTIONS_CURRENCY_ATS }, ///< austrian schilling
|
||||
{ 81, "", 2002, "BEF" NBSP, "", "BEF", 0, STR_GAME_OPTIONS_CURRENCY_BEF }, ///< belgian franc
|
||||
{ 2, "", CF_NOEURO, "CHF" NBSP, "", "CHF", 0, STR_GAME_OPTIONS_CURRENCY_CHF }, ///< swiss franc
|
||||
{ 41, "", CF_NOEURO, "", NBSP u8"K\u010d", "CZK", 1, STR_GAME_OPTIONS_CURRENCY_CZK }, ///< czech koruna
|
||||
{ 4, "", 2002, "DM" NBSP, "", "DEM", 0, STR_GAME_OPTIONS_CURRENCY_DEM }, ///< deutsche mark
|
||||
{ 11, "", CF_NOEURO, "", NBSP "kr", "DKK", 1, STR_GAME_OPTIONS_CURRENCY_DKK }, ///< danish krone
|
||||
{ 333, "", 2002, "Pts" NBSP, "", "ESP", 0, STR_GAME_OPTIONS_CURRENCY_ESP }, ///< spanish peseta
|
||||
{ 12, "", 2002, "", NBSP "mk", "FIM", 1, STR_GAME_OPTIONS_CURRENCY_FIM }, ///< finnish markka
|
||||
{ 13, "", 2002, "FF" NBSP, "", "FRF", 0, STR_GAME_OPTIONS_CURRENCY_FRF }, ///< french franc
|
||||
{ 681, "", 2002, "", "Dr.", "GRD", 1, STR_GAME_OPTIONS_CURRENCY_GRD }, ///< greek drachma
|
||||
{ 378, "", CF_NOEURO, "", NBSP "Ft", "HUF", 1, STR_GAME_OPTIONS_CURRENCY_HUF }, ///< hungarian forint
|
||||
{ 130, "", CF_NOEURO, "", NBSP "Kr", "ISK", 1, STR_GAME_OPTIONS_CURRENCY_ISK }, ///< icelandic krona
|
||||
{ 3873, "", 2002, "", NBSP "L.", "ITL", 1, STR_GAME_OPTIONS_CURRENCY_ITL }, ///< italian lira
|
||||
{ 4, "", 2002, "NLG" NBSP, "", "NLG", 0, STR_GAME_OPTIONS_CURRENCY_NLG }, ///< dutch gulden
|
||||
{ 12, "", CF_NOEURO, "", NBSP "Kr", "NOK", 1, STR_GAME_OPTIONS_CURRENCY_NOK }, ///< norwegian krone
|
||||
{ 6, "", CF_NOEURO, "", NBSP u8"z\u0142", "PLN", 1, STR_GAME_OPTIONS_CURRENCY_PLN }, ///< polish zloty
|
||||
{ 5, "", CF_NOEURO, "", NBSP "Lei", "RON", 1, STR_GAME_OPTIONS_CURRENCY_RON }, ///< romanian leu
|
||||
{ 50, "", CF_NOEURO, "", NBSP "p", "RUR", 1, STR_GAME_OPTIONS_CURRENCY_RUR }, ///< russian rouble
|
||||
{ 479, "", 2007, "", NBSP "SIT", "SIT", 1, STR_GAME_OPTIONS_CURRENCY_SIT }, ///< slovenian tolar
|
||||
{ 13, "", CF_NOEURO, "", NBSP "Kr", "SEK", 1, STR_GAME_OPTIONS_CURRENCY_SEK }, ///< swedish krona
|
||||
{ 3, "", CF_NOEURO, "", NBSP "TL", "TRY", 1, STR_GAME_OPTIONS_CURRENCY_TRY }, ///< turkish lira
|
||||
{ 60, "", 2009, "", NBSP "Sk", "SKK", 1, STR_GAME_OPTIONS_CURRENCY_SKK }, ///< slovak koruna
|
||||
{ 4, "", CF_NOEURO, "R$" NBSP, "", "BRL", 0, STR_GAME_OPTIONS_CURRENCY_BRL }, ///< brazil real
|
||||
{ 31, "", 2011, "", NBSP "EEK", "EEK", 1, STR_GAME_OPTIONS_CURRENCY_EEK }, ///< estonian krooni
|
||||
{ 4, "", 2015, "", NBSP "Lt", "LTL", 1, STR_GAME_OPTIONS_CURRENCY_LTL }, ///< lithuanian litas
|
||||
{ 1850, "", CF_NOEURO, u8"\u20a9", "", "KRW", 0, STR_GAME_OPTIONS_CURRENCY_KRW }, ///< south korean won
|
||||
{ 13, "", CF_NOEURO, "R" NBSP, "", "ZAR", 0, STR_GAME_OPTIONS_CURRENCY_ZAR }, ///< south african rand
|
||||
{ 1, "", CF_NOEURO, "", "", "", 2, STR_GAME_OPTIONS_CURRENCY_CUSTOM }, ///< custom currency (add further languages below)
|
||||
{ 3, "", CF_NOEURO, "", NBSP "GEL", "GEL", 1, STR_GAME_OPTIONS_CURRENCY_GEL }, ///< Georgian Lari
|
||||
{ 4901, "", CF_NOEURO, "", NBSP "Rls", "IRR", 1, STR_GAME_OPTIONS_CURRENCY_IRR }, ///< Iranian Rial
|
||||
{ 80, "", CF_NOEURO, "", NBSP "rub", "RUB", 1, STR_GAME_OPTIONS_CURRENCY_RUB }, ///< New Russian Ruble
|
||||
{ 24, "", CF_NOEURO, "$", "", "MXN", 0, STR_GAME_OPTIONS_CURRENCY_MXN }, ///< Mexican peso
|
||||
{ 40, "", CF_NOEURO, "NTD" NBSP, "", "NTD", 0, STR_GAME_OPTIONS_CURRENCY_NTD }, ///< new taiwan dollar
|
||||
{ 8, "", CF_NOEURO, u8"\u00a5", "", "CNY", 0, STR_GAME_OPTIONS_CURRENCY_CNY }, ///< chinese renminbi
|
||||
{ 10, "", CF_NOEURO, "HKD" NBSP, "", "HKD", 0, STR_GAME_OPTIONS_CURRENCY_HKD }, ///< hong kong dollar
|
||||
{ 90, "", CF_NOEURO, u8"\u20b9", "", "INR", 0, STR_GAME_OPTIONS_CURRENCY_INR }, ///< Indian Rupee
|
||||
{ 19, "", CF_NOEURO, "Rp", "", "IDR", 0, STR_GAME_OPTIONS_CURRENCY_IDR }, ///< Indonesian Rupiah
|
||||
{ 5, "", CF_NOEURO, "RM", "", "MYR", 0, STR_GAME_OPTIONS_CURRENCY_MYR }, ///< Malaysian Ringgit
|
||||
};
|
||||
|
||||
/** Array of currencies used by the system */
|
||||
@ -162,23 +162,3 @@ void ResetCurrencies(bool preserve_custom)
|
||||
_currency_specs[i] = origin_currency_specs[i];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a list of currency names StringIDs to use in a dropdown list
|
||||
* @return Pointer to a (static) array of StringIDs
|
||||
*/
|
||||
StringID *BuildCurrencyDropdown()
|
||||
{
|
||||
/* Allow room for all currencies, plus a terminator entry */
|
||||
static StringID names[CURRENCY_END + 1];
|
||||
uint i;
|
||||
|
||||
/* Add each name */
|
||||
for (i = 0; i < CURRENCY_END; i++) {
|
||||
names[i] = _currency_specs[i].name;
|
||||
}
|
||||
/* Terminate the list */
|
||||
names[i] = INVALID_STRING_ID;
|
||||
|
||||
return names;
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ struct CurrencySpec {
|
||||
TimerGameCalendar::Year to_euro; ///< Year of switching to the Euro. May also be #CF_NOEURO or #CF_ISEURO.
|
||||
std::string prefix; ///< Prefix to apply when formatting money in this currency.
|
||||
std::string suffix; ///< Suffix to apply when formatting money in this currency.
|
||||
std::string code; ///< 3 letter untranslated code to identify the currency.
|
||||
/**
|
||||
* The currency symbol is represented by two possible values, prefix and suffix
|
||||
* Usage of one or the other is determined by #symbol_pos.
|
||||
@ -89,8 +90,8 @@ struct CurrencySpec {
|
||||
|
||||
CurrencySpec() = default;
|
||||
|
||||
CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, byte symbol_pos, StringID name) :
|
||||
rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), symbol_pos(symbol_pos), name(name)
|
||||
CurrencySpec(uint16 rate, const char *separator, TimerGameCalendar::Year to_euro, const char *prefix, const char *suffix, const char *code, byte symbol_pos, StringID name) :
|
||||
rate(rate), separator(separator), to_euro(to_euro), prefix(prefix), suffix(suffix), code(code), symbol_pos(symbol_pos), name(name)
|
||||
{
|
||||
}
|
||||
};
|
||||
@ -103,7 +104,6 @@ extern CurrencySpec _currency_specs[CURRENCY_END];
|
||||
|
||||
uint64 GetMaskOfAllowedCurrencies();
|
||||
void ResetCurrencies(bool preserve_custom = true);
|
||||
StringID *BuildCurrencyDropdown();
|
||||
byte GetNewgrfCurrencyIdConverted(byte grfcurr_id);
|
||||
|
||||
#endif /* CURRENCY_H */
|
||||
|
@ -951,49 +951,51 @@ STR_GAME_OPTIONS_VOLUME_100 :100%
|
||||
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Currency units
|
||||
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}Currency units selection
|
||||
|
||||
STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({RAW_STRING})
|
||||
|
||||
###length 42
|
||||
STR_GAME_OPTIONS_CURRENCY_GBP :British Pound (GBP)
|
||||
STR_GAME_OPTIONS_CURRENCY_USD :American Dollar (USD)
|
||||
STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR)
|
||||
STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen (JPY)
|
||||
STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling (ATS)
|
||||
STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc (BEF)
|
||||
STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc (CHF)
|
||||
STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna (CZK)
|
||||
STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM)
|
||||
STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone (DKK)
|
||||
STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta (ESP)
|
||||
STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka (FIM)
|
||||
STR_GAME_OPTIONS_CURRENCY_FRF :French Franc (FRF)
|
||||
STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma (GRD)
|
||||
STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint (HUF)
|
||||
STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona (ISK)
|
||||
STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira (ITL)
|
||||
STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (NLG)
|
||||
STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone (NOK)
|
||||
STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty (PLN)
|
||||
STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu (RON)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles (RUR)
|
||||
STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar (SIT)
|
||||
STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona (SEK)
|
||||
STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira (TRY)
|
||||
STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna (SKK)
|
||||
STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real (BRL)
|
||||
STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni (EEK)
|
||||
STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas (LTL)
|
||||
STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won (KRW)
|
||||
STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand (ZAR)
|
||||
STR_GAME_OPTIONS_CURRENCY_GBP :British Pound
|
||||
STR_GAME_OPTIONS_CURRENCY_USD :American Dollar
|
||||
STR_GAME_OPTIONS_CURRENCY_EUR :Euro
|
||||
STR_GAME_OPTIONS_CURRENCY_JPY :Japanese Yen
|
||||
STR_GAME_OPTIONS_CURRENCY_ATS :Austrian Shilling
|
||||
STR_GAME_OPTIONS_CURRENCY_BEF :Belgian Franc
|
||||
STR_GAME_OPTIONS_CURRENCY_CHF :Swiss Franc
|
||||
STR_GAME_OPTIONS_CURRENCY_CZK :Czech Koruna
|
||||
STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark
|
||||
STR_GAME_OPTIONS_CURRENCY_DKK :Danish Krone
|
||||
STR_GAME_OPTIONS_CURRENCY_ESP :Spanish Peseta
|
||||
STR_GAME_OPTIONS_CURRENCY_FIM :Finnish Markka
|
||||
STR_GAME_OPTIONS_CURRENCY_FRF :French Franc
|
||||
STR_GAME_OPTIONS_CURRENCY_GRD :Greek Drachma
|
||||
STR_GAME_OPTIONS_CURRENCY_HUF :Hungarian Forint
|
||||
STR_GAME_OPTIONS_CURRENCY_ISK :Icelandic Krona
|
||||
STR_GAME_OPTIONS_CURRENCY_ITL :Italian Lira
|
||||
STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder
|
||||
STR_GAME_OPTIONS_CURRENCY_NOK :Norwegian Krone
|
||||
STR_GAME_OPTIONS_CURRENCY_PLN :Polish Złoty
|
||||
STR_GAME_OPTIONS_CURRENCY_RON :Romanian Leu
|
||||
STR_GAME_OPTIONS_CURRENCY_RUR :Russian Rubles
|
||||
STR_GAME_OPTIONS_CURRENCY_SIT :Slovenian Tolar
|
||||
STR_GAME_OPTIONS_CURRENCY_SEK :Swedish Krona
|
||||
STR_GAME_OPTIONS_CURRENCY_TRY :Turkish Lira
|
||||
STR_GAME_OPTIONS_CURRENCY_SKK :Slovak Koruna
|
||||
STR_GAME_OPTIONS_CURRENCY_BRL :Brazilian Real
|
||||
STR_GAME_OPTIONS_CURRENCY_EEK :Estonian Krooni
|
||||
STR_GAME_OPTIONS_CURRENCY_LTL :Lithuanian Litas
|
||||
STR_GAME_OPTIONS_CURRENCY_KRW :South Korean Won
|
||||
STR_GAME_OPTIONS_CURRENCY_ZAR :South African Rand
|
||||
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Custom...
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari (GEL)
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial (IRR)
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble (RUB)
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso (MXN)
|
||||
STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar (NTD)
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY)
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD)
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee (INR)
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah (IDR)
|
||||
STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit (MYR)
|
||||
STR_GAME_OPTIONS_CURRENCY_GEL :Georgian Lari
|
||||
STR_GAME_OPTIONS_CURRENCY_IRR :Iranian Rial
|
||||
STR_GAME_OPTIONS_CURRENCY_RUB :New Russian Ruble
|
||||
STR_GAME_OPTIONS_CURRENCY_MXN :Mexican Peso
|
||||
STR_GAME_OPTIONS_CURRENCY_NTD :New Taiwan Dollar
|
||||
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi
|
||||
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar
|
||||
STR_GAME_OPTIONS_CURRENCY_INR :Indian Rupee
|
||||
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesian Rupiah
|
||||
STR_GAME_OPTIONS_CURRENCY_MYR :Malaysian Ringgit
|
||||
|
||||
STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Autosave
|
||||
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Select interval between automatic game saves
|
||||
|
@ -2710,6 +2710,7 @@ static ChangeInfoResult GlobalVarChangeInfo(uint gvid, int numinfo, int prop, By
|
||||
|
||||
if ((newone != STR_UNDEFINED) && (curidx < CURRENCY_END)) {
|
||||
_currency_specs[curidx].name = newone;
|
||||
_currency_specs[curidx].code.clear();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -216,13 +216,19 @@ struct GameOptionsWindow : Window {
|
||||
switch (widget) {
|
||||
case WID_GO_CURRENCY_DROPDOWN: { // Setup currencies dropdown
|
||||
*selected_index = this->opt->locale.currency;
|
||||
StringID *items = BuildCurrencyDropdown();
|
||||
uint64 disabled = _game_mode == GM_MENU ? 0LL : ~GetMaskOfAllowedCurrencies();
|
||||
|
||||
/* Add non-custom currencies; sorted naturally */
|
||||
for (uint i = 0; i < CURRENCY_END; items++, i++) {
|
||||
for (const CurrencySpec ¤cy : _currency_specs) {
|
||||
int i = ¤cy - _currency_specs;
|
||||
if (i == CURRENCY_CUSTOM) continue;
|
||||
list.emplace_back(new DropDownListStringItem(*items, i, HasBit(disabled, i)));
|
||||
if (currency.code.empty()) {
|
||||
list.emplace_back(new DropDownListStringItem(currency.name, i, HasBit(disabled, i)));
|
||||
} else {
|
||||
SetDParam(0, currency.name);
|
||||
SetDParamStr(1, currency.code);
|
||||
list.emplace_back(new DropDownListStringItem(STR_GAME_OPTIONS_CURRENCY_CODE, i, HasBit(disabled, i)));
|
||||
}
|
||||
}
|
||||
std::sort(list.begin(), list.end(), DropDownListStringItem::NatSortFunc);
|
||||
|
||||
@ -303,7 +309,17 @@ struct GameOptionsWindow : Window {
|
||||
void SetStringParameters(int widget) const override
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_GO_CURRENCY_DROPDOWN: SetDParam(0, _currency_specs[this->opt->locale.currency].name); break;
|
||||
case WID_GO_CURRENCY_DROPDOWN: {
|
||||
const CurrencySpec ¤cy = _currency_specs[this->opt->locale.currency];
|
||||
if (currency.code.empty()) {
|
||||
SetDParam(0, currency.name);
|
||||
} else {
|
||||
SetDParam(0, STR_GAME_OPTIONS_CURRENCY_CODE);
|
||||
SetDParam(1, currency.name);
|
||||
SetDParamStr(2, currency.code);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WID_GO_AUTOSAVE_DROPDOWN: SetDParam(0, _autosave_dropdown[_settings_client.gui.autosave]); break;
|
||||
case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break;
|
||||
case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break;
|
||||
@ -763,7 +779,7 @@ static const NWidgetPart _nested_game_options_widgets[] = {
|
||||
EndContainer(),
|
||||
|
||||
NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME, STR_NULL),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_CURRENCY_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING2, STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP), SetFill(1, 0),
|
||||
EndContainer(),
|
||||
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GO_SURVEY_SEL),
|
||||
|
Loading…
Reference in New Issue
Block a user