mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-29 09:44:52 +01:00
Share currency detection across platforms
This commit is contained in:
@@ -160,6 +160,7 @@ void platform_show_messagebox(utf8 *message);
|
||||
int platform_open_common_file_dialog(int type, utf8 *title, utf8 *filename, utf8 *filterPattern, utf8 *filterName);
|
||||
utf8 *platform_open_directory_browser(utf8 *title);
|
||||
uint8 platform_get_locale_currency();
|
||||
uint8 platform_get_currency_value(const char *currencyCode);
|
||||
uint16 platform_get_locale_language();
|
||||
uint8 platform_get_locale_measurement_format();
|
||||
uint8 platform_get_locale_temperature_format();
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include <SDL_syswm.h>
|
||||
#include "../addresses.h"
|
||||
#include "../config.h"
|
||||
#include "../localisation/currency.h"
|
||||
#include "../localisation/language.h"
|
||||
#include "../openrct2.h"
|
||||
#include "../util/util.h"
|
||||
@@ -818,26 +817,13 @@ time_t platform_file_get_modified_time(const utf8* path){
|
||||
uint8 platform_get_locale_currency(){
|
||||
char *langstring = setlocale(LC_MONETARY, "");
|
||||
|
||||
if(langstring != NULL){
|
||||
struct lconv *lc = localeconv();
|
||||
|
||||
//Only works if g_currency_specs contains the actual (local) symbol
|
||||
for(int i = 0; i < CURRENCY_END; ++i){
|
||||
if(!strcmp(lc->currency_symbol, CurrencyDescriptors[i].symbol_unicode)){
|
||||
return i;
|
||||
}
|
||||
}
|
||||
//TODO: can be removed when CurrencyDescriptors contains the actual symbols for won and rubel
|
||||
//Won should remain a special case, beacause some (or all?) systems use the full width won sign (e.g. Gentoo)
|
||||
if(!strncmp(lc->int_curr_symbol, "KRW", 3)){
|
||||
return CURRENCY_WON;
|
||||
}
|
||||
else if(!strncmp(lc->int_curr_symbol, "RUB", 3)){
|
||||
return CURRENCY_ROUBLE;
|
||||
}
|
||||
if (langstring == NULL) {
|
||||
return platform_get_currency_value(NULL);
|
||||
}
|
||||
//All other currencies are historic
|
||||
return CURRENCY_POUNDS;
|
||||
|
||||
struct lconv *lc = localeconv();
|
||||
|
||||
return platform_get_currency_value(lc->int_curr_symbol);
|
||||
}
|
||||
|
||||
uint8 platform_get_locale_measurement_format(){
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "../interface/keyboard_shortcut.h"
|
||||
#include "../interface/window.h"
|
||||
#include "../input.h"
|
||||
#include "../localisation/currency.h"
|
||||
#include "../localisation/localisation.h"
|
||||
#include "../openrct2.h"
|
||||
#include "../title.h"
|
||||
@@ -1115,3 +1116,17 @@ unsigned int platform_get_ticks()
|
||||
{
|
||||
return SDL_GetTicks();
|
||||
}
|
||||
|
||||
uint8 platform_get_currency_value(const char *currCode) {
|
||||
if (currCode == NULL || strlen(currCode) < 3) {
|
||||
return CURRENCY_POUNDS;
|
||||
}
|
||||
|
||||
for (int currency = 0; currency < CURRENCY_END; ++currency) {
|
||||
if (strncmp(currCode, CurrencyDescriptors[currency].isoCode, 3) == 0) {
|
||||
return currency;
|
||||
}
|
||||
}
|
||||
|
||||
return CURRENCY_POUNDS;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
#include "../addresses.h"
|
||||
#include "../openrct2.h"
|
||||
#include "../localisation/language.h"
|
||||
#include "../localisation/currency.h"
|
||||
#include "../util/util.h"
|
||||
#include "../config.h"
|
||||
#include "platform.h"
|
||||
@@ -842,45 +841,15 @@ time_t platform_file_get_modified_time(const utf8* path)
|
||||
uint8 platform_get_locale_currency()
|
||||
{
|
||||
CHAR currCode[4];
|
||||
|
||||
if (GetLocaleInfo(LOCALE_USER_DEFAULT,
|
||||
LOCALE_SINTLSYMBOL,
|
||||
(LPSTR)&currCode,
|
||||
sizeof(currCode)) == 0
|
||||
) {
|
||||
return CURRENCY_POUNDS;
|
||||
return platform_get_currency_value(NULL);
|
||||
}
|
||||
if (strcmp(currCode, "GBP") == 0){
|
||||
return CURRENCY_POUNDS;
|
||||
}
|
||||
else if (strcmp(currCode, "USD") == 0){
|
||||
return CURRENCY_DOLLARS;
|
||||
}
|
||||
else if (strcmp(currCode, "EUR") == 0){
|
||||
return CURRENCY_EUROS;
|
||||
}
|
||||
else if (strcmp(currCode, "SEK") == 0){
|
||||
return CURRENCY_KRONA;
|
||||
}
|
||||
else if (strcmp(currCode, "DEM") == 0){
|
||||
return CURRENCY_DEUTSCHMARK;
|
||||
}
|
||||
else if (strcmp(currCode, "ITL") == 0){
|
||||
return CURRENCY_LIRA;
|
||||
}
|
||||
else if (strcmp(currCode, "JPY") == 0){
|
||||
return CURRENCY_YEN;
|
||||
}
|
||||
else if (strcmp(currCode, "ESP") == 0){
|
||||
return CURRENCY_PESETA;
|
||||
}
|
||||
else if (strcmp(currCode, "FRF") == 0){
|
||||
return CURRENCY_FRANC;
|
||||
}
|
||||
else if (strcmp(currCode, "NLG") == 0){
|
||||
return CURRENCY_GUILDERS;
|
||||
}
|
||||
return CURRENCY_POUNDS;
|
||||
|
||||
return platform_get_currency_value(currCode);
|
||||
}
|
||||
|
||||
uint8 platform_get_locale_measurement_format()
|
||||
|
||||
Reference in New Issue
Block a user