diff --git a/src/openrct2-ui/windows/CustomCurrency.cpp b/src/openrct2-ui/windows/CustomCurrency.cpp index efc6b878e0..fc65d67944 100644 --- a/src/openrct2-ui/windows/CustomCurrency.cpp +++ b/src/openrct2-ui/windows/CustomCurrency.cpp @@ -94,17 +94,17 @@ static void custom_currency_window_mousedown(rct_window* w, rct_widgetindex widg break; case WIDX_RATE_UP: - CurrencyDescriptors[CURRENCY_CUSTOM].rate += 1; - gConfigGeneral.custom_currency_rate = CurrencyDescriptors[CURRENCY_CUSTOM].rate; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate += 1; + gConfigGeneral.custom_currency_rate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; config_save_default(); window_invalidate_all(); break; case WIDX_RATE_DOWN: - if (CurrencyDescriptors[CURRENCY_CUSTOM].rate > 1) + if (CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate > 1) { - CurrencyDescriptors[CURRENCY_CUSTOM].rate -= 1; - gConfigGeneral.custom_currency_rate = CurrencyDescriptors[CURRENCY_CUSTOM].rate; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate -= 1; + gConfigGeneral.custom_currency_rate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; config_save_default(); window_invalidate_all(); } @@ -121,7 +121,7 @@ static void custom_currency_window_mousedown(rct_window* w, rct_widgetindex widg { w->windowPos.x + widget->left, w->windowPos.y + widget->top }, widget->height() + 1, w->colours[1], 0, DROPDOWN_FLAG_STAY_OPEN, 2, widget->width() - 3); - if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CurrencyAffix::Prefix) + if (CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode == CurrencyAffix::Prefix) { dropdown_set_checked(0, true); } @@ -135,7 +135,7 @@ static void custom_currency_window_mousedown(rct_window* w, rct_widgetindex widg case WIDX_SYMBOL_TEXT: window_text_input_raw_open( w, WIDX_SYMBOL_TEXT, STR_CUSTOM_CURRENCY_SYMBOL_INPUT_TITLE, STR_CUSTOM_CURRENCY_SYMBOL_INPUT_DESC, - CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, CURRENCY_SYMBOL_MAX_SIZE); + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, CURRENCY_SYMBOL_MAX_SIZE); break; } } @@ -147,7 +147,7 @@ static void custom_currency_window_mouseup(rct_window* w, rct_widgetindex widget case WIDX_RATE: window_text_input_open( w, WIDX_RATE, STR_RATE_INPUT_TITLE, STR_RATE_INPUT_DESC, STR_FORMAT_INTEGER, - static_cast(CurrencyDescriptors[CURRENCY_CUSTOM].rate), CURRENCY_RATE_MAX_NUM_DIGITS); + static_cast(CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate), CURRENCY_RATE_MAX_NUM_DIGITS); break; } } @@ -161,16 +161,16 @@ static void custom_currency_window_dropdown([[maybe_unused]] rct_window* w, rct_ { if (dropdownIndex == 0) { - CurrencyDescriptors[CURRENCY_CUSTOM].affix_ascii = CurrencyAffix::Prefix; - CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode = CurrencyAffix::Prefix; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_ascii = CurrencyAffix::Prefix; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode = CurrencyAffix::Prefix; } else if (dropdownIndex == 1) { - CurrencyDescriptors[CURRENCY_CUSTOM].affix_ascii = CurrencyAffix::Suffix; - CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode = CurrencyAffix::Suffix; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_ascii = CurrencyAffix::Suffix; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode = CurrencyAffix::Suffix; } - gConfigGeneral.custom_currency_affix = CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode; + gConfigGeneral.custom_currency_affix = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode; config_save_default(); window_invalidate_all(); @@ -186,10 +186,10 @@ static void custom_currency_window_text_input([[maybe_unused]] struct rct_window switch (widgetIndex) { case WIDX_SYMBOL_TEXT: - safe_strcpy(CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, text, CURRENCY_SYMBOL_MAX_SIZE); + safe_strcpy(CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, text, CURRENCY_SYMBOL_MAX_SIZE); safe_strcpy( - gConfigGeneral.custom_currency_symbol, CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, + gConfigGeneral.custom_currency_symbol, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, CURRENCY_SYMBOL_MAX_SIZE); config_save_default(); @@ -200,8 +200,8 @@ static void custom_currency_window_text_input([[maybe_unused]] struct rct_window rate = strtol(text, &end, 10); if (*end == '\0') { - CurrencyDescriptors[CURRENCY_CUSTOM].rate = rate; - gConfigGeneral.custom_currency_rate = CurrencyDescriptors[CURRENCY_CUSTOM].rate; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate = rate; + gConfigGeneral.custom_currency_rate = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate; config_save_default(); window_invalidate_all(); } @@ -220,7 +220,7 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi) gfx_draw_string_left(dpi, STR_RATE, nullptr, w->colours[1], screenCoords); - int32_t baseExchange = CurrencyDescriptors[CURRENCY_POUNDS].rate; + int32_t baseExchange = CurrencyDescriptors[EnumValue(CurrencyType::Pounds)].rate; ft = Formatter(); ft.Add(baseExchange); gfx_draw_string_left( @@ -234,9 +234,9 @@ static void custom_currency_window_paint(rct_window* w, rct_drawpixelinfo* dpi) + ScreenCoordsXY{ window_custom_currency_widgets[WIDX_SYMBOL_TEXT].left + 1, window_custom_currency_widgets[WIDX_SYMBOL_TEXT].top }; - gfx_draw_string(dpi, CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, w->colours[1], screenCoords); + gfx_draw_string(dpi, CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, w->colours[1], screenCoords); - if (CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode == CurrencyAffix::Prefix) + if (CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode == CurrencyAffix::Prefix) { gfx_draw_string_left( dpi, STR_PREFIX, w, w->colours[1], diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 1427616b10..80e51a96c8 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1116,8 +1116,8 @@ static void window_options_culture_mousedown(rct_window* w, rct_widgetindex widg break; case WIDX_CURRENCY_DROPDOWN: { - uint32_t num_items = CURRENCY_END + 1; // All the currencies plus the separator - size_t num_ordinary_currencies = CURRENCY_END - 1; // All the currencies except custom currency + uint32_t num_items = EnumValue(CurrencyType::Count) + 1; // All the currencies plus the separator + size_t num_ordinary_currencies = EnumValue(CurrencyType::Count) - 1; // All the currencies except custom currency for (size_t i = 0; i < num_ordinary_currencies; i++) { @@ -1128,17 +1128,17 @@ static void window_options_culture_mousedown(rct_window* w, rct_widgetindex widg gDropdownItemsFormat[num_ordinary_currencies] = DROPDOWN_SEPARATOR; gDropdownItemsFormat[num_ordinary_currencies + 1] = STR_DROPDOWN_MENU_LABEL; - gDropdownItemsArgs[num_ordinary_currencies + 1] = CurrencyDescriptors[CURRENCY_CUSTOM].stringId; + gDropdownItemsArgs[num_ordinary_currencies + 1] = CurrencyDescriptors[EnumValue(CurrencyType::Custom)].stringId; window_options_show_dropdown(w, widget, num_items); - if (gConfigGeneral.currency_format == CURRENCY_CUSTOM) + if (gConfigGeneral.currency_format == CurrencyType::Custom) { - dropdown_set_checked(gConfigGeneral.currency_format + 1, true); + dropdown_set_checked(EnumValue(gConfigGeneral.currency_format) + 1, true); } else { - dropdown_set_checked(gConfigGeneral.currency_format, true); + dropdown_set_checked(EnumValue(gConfigGeneral.currency_format), true); } break; } @@ -1204,14 +1204,14 @@ static void window_options_culture_dropdown(rct_window* w, rct_widgetindex widge window_options_update_height_markers(); break; case WIDX_CURRENCY_DROPDOWN: - if (dropdownIndex == CURRENCY_CUSTOM + 1) + if (dropdownIndex == EnumValue(CurrencyType::Custom) + 1) { // Add 1 because the separator occupies a position - gConfigGeneral.currency_format = static_cast(dropdownIndex) - 1; + gConfigGeneral.currency_format = static_cast(dropdownIndex - 1); context_open_window(WC_CUSTOM_CURRENCY_CONFIG); } else { - gConfigGeneral.currency_format = static_cast(dropdownIndex); + gConfigGeneral.currency_format = static_cast(dropdownIndex); } config_save_default(); gfx_invalidate_screen(); @@ -1276,7 +1276,8 @@ static void window_options_culture_invalidate(rct_window* w) ft.Add(LanguagesDescriptors[LocalisationService_GetCurrentLanguage()].native_name); // Currency: pounds, dollars, etc. (10 total) - window_options_culture_widgets[WIDX_CURRENCY].text = CurrencyDescriptors[gConfigGeneral.currency_format].stringId; + window_options_culture_widgets[WIDX_CURRENCY].text = CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)] + .stringId; // Distance: metric / imperial / si { diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index fe8a3cdc59..0e791fbc84 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -51,25 +51,25 @@ namespace Config ConfigEnumEntry("SI", MeasurementFormat::SI), }); - static const auto Enum_Currency = ConfigEnum({ - ConfigEnumEntry("GBP", CURRENCY_POUNDS), - ConfigEnumEntry("USD", CURRENCY_DOLLARS), - ConfigEnumEntry("FRF", CURRENCY_FRANC), - ConfigEnumEntry("DEM", CURRENCY_DEUTSCHE_MARK), - ConfigEnumEntry("JPY", CURRENCY_YEN), - ConfigEnumEntry("ESP", CURRENCY_PESETA), - ConfigEnumEntry("ITL", CURRENCY_LIRA), - ConfigEnumEntry("NLG", CURRENCY_GUILDERS), - ConfigEnumEntry("SEK", CURRENCY_KRONA), - ConfigEnumEntry("EUR", CURRENCY_EUROS), - ConfigEnumEntry("KRW", CURRENCY_WON), - ConfigEnumEntry("RUB", CURRENCY_ROUBLE), - ConfigEnumEntry("CZK", CURRENCY_CZECH_KORUNA), - ConfigEnumEntry("HKD", CURRENCY_HKD), - ConfigEnumEntry("TWD", CURRENCY_TWD), - ConfigEnumEntry("CNY", CURRENCY_YUAN), - ConfigEnumEntry("HUF", CURRENCY_FORINT), - ConfigEnumEntry("CUSTOM", CURRENCY_CUSTOM), + static const auto Enum_Currency = ConfigEnum({ + ConfigEnumEntry("GBP", CurrencyType::Pounds), + ConfigEnumEntry("USD", CurrencyType::Dollars), + ConfigEnumEntry("FRF", CurrencyType::Franc), + ConfigEnumEntry("DEM", CurrencyType::DeutscheMark), + ConfigEnumEntry("JPY", CurrencyType::Yen), + ConfigEnumEntry("ESP", CurrencyType::Peseta), + ConfigEnumEntry("ITL", CurrencyType::Lira), + ConfigEnumEntry("NLG", CurrencyType::Guilders), + ConfigEnumEntry("SEK", CurrencyType::Krona), + ConfigEnumEntry("EUR", CurrencyType::Euros), + ConfigEnumEntry("KRW", CurrencyType::Won), + ConfigEnumEntry("RUB", CurrencyType::Rouble), + ConfigEnumEntry("CZK", CurrencyType::CzechKoruna), + ConfigEnumEntry("HKD", CurrencyType::HKD), + ConfigEnumEntry("TWD", CurrencyType::TWD), + ConfigEnumEntry("CNY", CurrencyType::Yuan), + ConfigEnumEntry("HUF", CurrencyType::Forint), + ConfigEnumEntry("CUSTOM", CurrencyType::Custom), }); static const auto Enum_CurrencySymbolAffix = ConfigEnum({ @@ -144,7 +144,8 @@ namespace Config model->autosave_frequency = reader->GetInt32("autosave", AUTOSAVE_EVERY_5MINUTES); model->autosave_amount = reader->GetInt32("autosave_amount", DEFAULT_NUM_AUTOSAVES_TO_KEEP); model->confirmation_prompt = reader->GetBoolean("confirmation_prompt", false); - model->currency_format = reader->GetEnum("currency_format", platform_get_locale_currency(), Enum_Currency); + model->currency_format = reader->GetEnum( + "currency_format", platform_get_locale_currency(), Enum_Currency); model->custom_currency_rate = reader->GetInt32("custom_currency_rate", 10); model->custom_currency_affix = reader->GetEnum( "custom_currency_affix", CurrencyAffix::Suffix, Enum_CurrencySymbolAffix); @@ -230,7 +231,7 @@ namespace Config writer->WriteInt32("autosave", model->autosave_frequency); writer->WriteInt32("autosave_amount", model->autosave_amount); writer->WriteBoolean("confirmation_prompt", model->confirmation_prompt); - writer->WriteEnum("currency_format", model->currency_format, Enum_Currency); + writer->WriteEnum("currency_format", model->currency_format, Enum_Currency); writer->WriteInt32("custom_currency_rate", model->custom_currency_rate); writer->WriteEnum("custom_currency_affix", model->custom_currency_affix, Enum_CurrencySymbolAffix); writer->WriteString("custom_currency_symbol", model->custom_currency_symbol); diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index 17c95d3f24..060c212dc7 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -64,7 +64,7 @@ struct GeneralConfiguration TemperatureUnit temperature_format; bool show_height_as_units; int32_t date_format; - int32_t currency_format; + CurrencyType currency_format; int32_t custom_currency_rate; CurrencyAffix custom_currency_affix; utf8* custom_currency_symbol; diff --git a/src/openrct2/localisation/Currency.cpp b/src/openrct2/localisation/Currency.cpp index d7f48b2e1a..f70edd5f45 100644 --- a/src/openrct2/localisation/Currency.cpp +++ b/src/openrct2/localisation/Currency.cpp @@ -14,7 +14,7 @@ #include "StringIds.h" // clang-format off -currency_descriptor CurrencyDescriptors[CURRENCY_END] = { +currency_descriptor CurrencyDescriptors[EnumValue(CurrencyType::Count)] = { { "GBP", 10, CurrencyAffix::Prefix, "\xC2\xA3", CurrencyAffix::Suffix, "GBP", STR_POUNDS }, // British Pound { "USD", 10, CurrencyAffix::Prefix, "$", CurrencyAffix::Prefix, "$", STR_DOLLARS }, // US Dollar { "FRF", 10, CurrencyAffix::Suffix, "F", CurrencyAffix::Suffix, "F", STR_FRANC }, // French Franc @@ -38,12 +38,12 @@ currency_descriptor CurrencyDescriptors[CURRENCY_END] = { void currency_load_custom_currency_config() { - CurrencyDescriptors[CURRENCY_CUSTOM].rate = gConfigGeneral.custom_currency_rate; - CurrencyDescriptors[CURRENCY_CUSTOM].affix_unicode = gConfigGeneral.custom_currency_affix; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].rate = gConfigGeneral.custom_currency_rate; + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].affix_unicode = gConfigGeneral.custom_currency_affix; if (gConfigGeneral.custom_currency_symbol != nullptr) { safe_strcpy( - CurrencyDescriptors[CURRENCY_CUSTOM].symbol_unicode, gConfigGeneral.custom_currency_symbol, + CurrencyDescriptors[EnumValue(CurrencyType::Custom)].symbol_unicode, gConfigGeneral.custom_currency_symbol, CURRENCY_SYMBOL_MAX_SIZE); } } diff --git a/src/openrct2/localisation/Currency.h b/src/openrct2/localisation/Currency.h index d72ad61620..a926f70bf8 100644 --- a/src/openrct2/localisation/Currency.h +++ b/src/openrct2/localisation/Currency.h @@ -13,29 +13,29 @@ #include "../common.h" // List of currencies -enum CURRENCY_TYPE +enum class CurrencyType : uint8_t { - CURRENCY_POUNDS, // British Pound - CURRENCY_DOLLARS, // US Dollar - CURRENCY_FRANC, // French Franc - CURRENCY_DEUTSCHE_MARK, // Deutsche Mark - CURRENCY_YEN, // Japanese Yen - CURRENCY_PESETA, // Spanish Peseta - CURRENCY_LIRA, // Italian Lira - CURRENCY_GUILDERS, // Dutch Gilder - CURRENCY_KRONA, // Swedish Krona - CURRENCY_EUROS, // Euro - CURRENCY_WON, // South Korean Won - CURRENCY_ROUBLE, // Russian Rouble - CURRENCY_CZECH_KORUNA, // Czech koruna - CURRENCY_HKD, // Hong Kong Dollar - CURRENCY_TWD, // New Taiwan Dollar - CURRENCY_YUAN, // Chinese Yuan - CURRENCY_FORINT, // Hungarian Forint + Pounds, // British Pound + Dollars, // US Dollar + Franc, // French Franc + DeutscheMark, // Deutsche Mark + Yen, // Japanese Yen + Peseta, // Spanish Peseta + Lira, // Italian Lira + Guilders, // Dutch Gilder + Krona, // Swedish Krona + Euros, // Euro + Won, // South Korean Won + Rouble, // Russian Rouble + CzechKoruna, // Czech koruna + HKD, // Hong Kong Dollar + TWD, // New Taiwan Dollar + Yuan, // Chinese Yuan + Forint, // Hungarian Forint - CURRENCY_CUSTOM, // Custom currency + Custom, // Custom currency - CURRENCY_END // Last item + Count // Last item }; enum class CurrencyAffix @@ -61,7 +61,7 @@ struct currency_descriptor }; // List of currency formats -extern currency_descriptor CurrencyDescriptors[CURRENCY_END]; +extern currency_descriptor CurrencyDescriptors[static_cast(CurrencyType::Count)]; /** * Loads custom currency saved parameters into {@link CurrencyDescriptors}' diff --git a/src/openrct2/localisation/Localisation.cpp b/src/openrct2/localisation/Localisation.cpp index ec80c1f3c0..22a22a301f 100644 --- a/src/openrct2/localisation/Localisation.cpp +++ b/src/openrct2/localisation/Localisation.cpp @@ -785,7 +785,7 @@ static void format_currency(char** dest, size_t* size, int64_t value) if ((*size) == 0) return; - const currency_descriptor* currencyDesc = &CurrencyDescriptors[gConfigGeneral.currency_format]; + const currency_descriptor* currencyDesc = &CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)]; value *= currencyDesc->rate; @@ -828,7 +828,7 @@ static void format_currency_2dp(char** dest, size_t* size, int64_t value) if ((*size) == 0) return; - const currency_descriptor* currencyDesc = &CurrencyDescriptors[gConfigGeneral.currency_format]; + const currency_descriptor* currencyDesc = &CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)]; int32_t rate = currencyDesc->rate; value *= rate; @@ -1438,7 +1438,7 @@ void format_readable_speed(char* buf, size_t bufSize, uint64_t sizeBytes) money32 string_to_money(const char* string_to_monetise) { const char* decimal_char = language_get_string(STR_LOCALE_DECIMAL_POINT); - const currency_descriptor* currencyDesc = &CurrencyDescriptors[gConfigGeneral.currency_format]; + const currency_descriptor* currencyDesc = &CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)]; char processedString[128] = {}; Guard::Assert(strlen(string_to_monetise) < sizeof(processedString)); @@ -1543,7 +1543,7 @@ void money_to_string(money32 amount, char* buffer_to_put_value_to, size_t buffer return; } - const currency_descriptor* currencyDesc = &CurrencyDescriptors[gConfigGeneral.currency_format]; + const currency_descriptor* currencyDesc = &CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)]; int sign = amount >= 0 ? 1 : -1; int a = abs(amount) * currencyDesc->rate; diff --git a/src/openrct2/paint/Paint.cpp b/src/openrct2/paint/Paint.cpp index 0348a1ebad..54b701cf03 100644 --- a/src/openrct2/paint/Paint.cpp +++ b/src/openrct2/paint/Paint.cpp @@ -1131,7 +1131,7 @@ void PaintDrawMoneyStructs(rct_drawpixelinfo* dpi, paint_string_struct* ps) // Use sprite font unless the currency contains characters unsupported by the sprite font auto forceSpriteFont = false; - const auto& currencyDesc = CurrencyDescriptors[gConfigGeneral.currency_format]; + const auto& currencyDesc = CurrencyDescriptors[EnumValue(gConfigGeneral.currency_format)]; if (LocalisationService_UseTrueTypeFont() && font_supports_string_sprite(currencyDesc.symbol_unicode)) { forceSpriteFont = true; diff --git a/src/openrct2/platform/Android.cpp b/src/openrct2/platform/Android.cpp index c22b6921cc..69c12b624d 100644 --- a/src/openrct2/platform/Android.cpp +++ b/src/openrct2/platform/Android.cpp @@ -31,7 +31,7 @@ uint16_t platform_get_locale_language() return LANGUAGE_ENGLISH_UK; } -uint8_t platform_get_locale_currency() +CurrencyType platform_get_locale_currency() { return platform_get_currency_value(NULL); } diff --git a/src/openrct2/platform/Linux.cpp b/src/openrct2/platform/Linux.cpp index 4f830f1279..e345ba6470 100644 --- a/src/openrct2/platform/Linux.cpp +++ b/src/openrct2/platform/Linux.cpp @@ -109,7 +109,7 @@ uint16_t platform_get_locale_language() return LANGUAGE_ENGLISH_UK; } -uint8_t platform_get_locale_currency() +CurrencyType platform_get_locale_currency() { char* langstring = setlocale(LC_MONETARY, ""); diff --git a/src/openrct2/platform/Shared.cpp b/src/openrct2/platform/Shared.cpp index 1323d06d0f..ba4f591b7d 100644 --- a/src/openrct2/platform/Shared.cpp +++ b/src/openrct2/platform/Shared.cpp @@ -216,22 +216,22 @@ void platform_sleep(uint32_t ms) #endif } -uint8_t platform_get_currency_value(const char* currCode) +CurrencyType platform_get_currency_value(const char* currCode) { if (currCode == nullptr || strlen(currCode) < 3) { - return CURRENCY_POUNDS; + return CurrencyType::Pounds; } - for (int32_t currency = 0; currency < CURRENCY_END; ++currency) + for (int32_t currency = 0; currency < EnumValue(CurrencyType::Count); ++currency) { if (strncmp(currCode, CurrencyDescriptors[currency].isoCode, 3) == 0) { - return currency; + return static_cast(currency); } } - return CURRENCY_POUNDS; + return CurrencyType::Pounds; } #ifndef _WIN32 diff --git a/src/openrct2/platform/Windows.cpp b/src/openrct2/platform/Windows.cpp index 58792ac69c..f4e33433a8 100644 --- a/src/openrct2/platform/Windows.cpp +++ b/src/openrct2/platform/Windows.cpp @@ -297,7 +297,7 @@ time_t platform_file_get_modified_time(const utf8* path) return 0; } -uint8_t platform_get_locale_currency() +CurrencyType platform_get_locale_currency() { CHAR currCode[4]; if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SINTLSYMBOL, reinterpret_cast(&currCode), sizeof(currCode)) == 0) diff --git a/src/openrct2/platform/macos.mm b/src/openrct2/platform/macos.mm index 061167face..099454291b 100644 --- a/src/openrct2/platform/macos.mm +++ b/src/openrct2/platform/macos.mm @@ -113,7 +113,7 @@ uint16_t platform_get_locale_language() } } -uint8_t platform_get_locale_currency() +CurrencyType platform_get_locale_currency() { @autoreleasepool { diff --git a/src/openrct2/platform/platform.h b/src/openrct2/platform/platform.h index 3b41dec0e4..b1d718606c 100644 --- a/src/openrct2/platform/platform.h +++ b/src/openrct2/platform/platform.h @@ -113,8 +113,8 @@ void platform_get_user_directory(utf8* outPath, const utf8* subDirectory, size_t std::string platform_get_username(); bool platform_open_common_file_dialog(utf8* outFilename, file_dialog_desc* desc, size_t outSize); utf8* platform_open_directory_browser(const utf8* title); -uint8_t platform_get_locale_currency(); -uint8_t platform_get_currency_value(const char* currencyCode); +CurrencyType platform_get_locale_currency(); +CurrencyType platform_get_currency_value(const char* currencyCode); uint16_t platform_get_locale_language(); MeasurementFormat platform_get_locale_measurement_format(); TemperatureUnit platform_get_locale_temperature_format();