From 7cd6e72edda4536bea947904ac89505ecd37e472 Mon Sep 17 00:00:00 2001 From: Michael Lu Date: Sat, 8 Aug 2020 23:26:46 -0700 Subject: [PATCH] Refactor TEMPERATURE_FORMAT to use strong enum (#12610) * Refactor TEMPERATURE_FORMAT to use strong enum * Rename TEMPERATURE_FORMAT to TemperatureFormat * Rename TemperatureFormat to TempueratureUnit --- src/openrct2-ui/windows/GameBottomToolbar.cpp | 2 +- src/openrct2-ui/windows/Options.cpp | 9 +++++---- src/openrct2/config/Config.cpp | 10 +++++----- src/openrct2/config/Config.h | 10 ++++++---- src/openrct2/platform/Posix.cpp | 6 +++--- src/openrct2/platform/Windows.cpp | 8 ++++---- src/openrct2/platform/platform.h | 3 ++- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/openrct2-ui/windows/GameBottomToolbar.cpp b/src/openrct2-ui/windows/GameBottomToolbar.cpp index 8032f53668..9347d09385 100644 --- a/src/openrct2-ui/windows/GameBottomToolbar.cpp +++ b/src/openrct2-ui/windows/GameBottomToolbar.cpp @@ -535,7 +535,7 @@ static void window_game_bottom_toolbar_draw_right_panel(rct_drawpixelinfo* dpi, int32_t temperature = gClimateCurrent.Temperature; rct_string_id format = STR_CELSIUS_VALUE; - if (gConfigGeneral.temperature_format == TEMPERATURE_FORMAT_F) + if (gConfigGeneral.temperature_format == TemperatureUnit::Fahrenheit) { temperature = climate_celsius_to_fahrenheit(temperature); format = STR_FAHRENHEIT_VALUE; diff --git a/src/openrct2-ui/windows/Options.cpp b/src/openrct2-ui/windows/Options.cpp index 4e52c4ce7c..26412f5c64 100644 --- a/src/openrct2-ui/windows/Options.cpp +++ b/src/openrct2-ui/windows/Options.cpp @@ -1153,7 +1153,7 @@ static void window_options_mousedown(rct_window* w, rct_widgetindex widgetIndex, window_options_show_dropdown(w, widget, 2); - dropdown_set_checked(gConfigGeneral.temperature_format, true); + dropdown_set_checked(static_cast(gConfigGeneral.temperature_format), true); break; case WIDX_LANGUAGE_DROPDOWN: for (size_t i = 1; i < LANGUAGE_COUNT; i++) @@ -1421,9 +1421,9 @@ static void window_options_dropdown(rct_window* w, rct_widgetindex widgetIndex, window_options_update_height_markers(); break; case WIDX_TEMPERATURE_DROPDOWN: - if (dropdownIndex != gConfigGeneral.temperature_format) + if (dropdownIndex != static_cast(gConfigGeneral.temperature_format)) { - gConfigGeneral.temperature_format = static_cast(dropdownIndex); + gConfigGeneral.temperature_format = static_cast(dropdownIndex); config_save_default(); gfx_invalidate_screen(); } @@ -1761,7 +1761,8 @@ static void window_options_invalidate(rct_window* w) window_options_culture_widgets[WIDX_DATE_FORMAT].text = DateFormatStringIds[gConfigGeneral.date_format]; // Temperature: celsius/fahrenheit - window_options_culture_widgets[WIDX_TEMPERATURE].text = gConfigGeneral.temperature_format == TEMPERATURE_FORMAT_F + window_options_culture_widgets[WIDX_TEMPERATURE].text = gConfigGeneral.temperature_format + == TemperatureUnit::Fahrenheit ? STR_FAHRENHEIT : STR_CELSIUS; diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index e43fc3abf3..12491b6d7c 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -88,9 +88,9 @@ namespace Config ConfigEnumEntry("OPENGL", DRAWING_ENGINE_OPENGL), }); - static const auto Enum_Temperature = ConfigEnum({ - ConfigEnumEntry("CELSIUS", TEMPERATURE_FORMAT_C), - ConfigEnumEntry("FAHRENHEIT", TEMPERATURE_FORMAT_F), + static const auto Enum_Temperature = ConfigEnum({ + ConfigEnumEntry("CELSIUS", TemperatureUnit::Celsius), + ConfigEnumEntry("FAHRENHEIT", TemperatureUnit::Fahrenheit), }); static const auto Enum_ScaleQuality = ConfigEnum({ @@ -162,7 +162,7 @@ namespace Config model->save_plugin_data = reader->GetBoolean("save_plugin_data", true); model->debugging_tools = reader->GetBoolean("debugging_tools", false); model->show_height_as_units = reader->GetBoolean("show_height_as_units", false); - model->temperature_format = reader->GetEnum( + model->temperature_format = reader->GetEnum( "temperature_format", platform_get_locale_temperature_format(), Enum_Temperature); model->window_height = reader->GetInt32("window_height", -1); model->window_snap_proximity = reader->GetInt32("window_snap_proximity", 5); @@ -242,7 +242,7 @@ namespace Config writer->WriteBoolean("save_plugin_data", model->save_plugin_data); writer->WriteBoolean("debugging_tools", model->debugging_tools); writer->WriteBoolean("show_height_as_units", model->show_height_as_units); - writer->WriteEnum("temperature_format", model->temperature_format, Enum_Temperature); + writer->WriteEnum("temperature_format", model->temperature_format, Enum_Temperature); writer->WriteInt32("window_height", model->window_height); writer->WriteInt32("window_snap_proximity", model->window_snap_proximity); writer->WriteInt32("window_width", model->window_width); diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index e798bef4c5..9f9969c471 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -15,6 +15,8 @@ #include +enum class TemperatureUnit : int32_t; + struct GeneralConfiguration { // Paths @@ -54,7 +56,7 @@ struct GeneralConfiguration // Localisation int32_t language; int32_t measurement_format; - int32_t temperature_format; + TemperatureUnit temperature_format; bool show_height_as_units; int32_t date_format; int32_t currency_format; @@ -206,10 +208,10 @@ enum SORT SORT_DATE_DESCENDING, }; -enum TEMPERATURE_FORMAT +enum class TemperatureUnit : int32_t { - TEMPERATURE_FORMAT_C, - TEMPERATURE_FORMAT_F + Celsius, + Fahrenheit }; enum SCALE_QUALITY diff --git a/src/openrct2/platform/Posix.cpp b/src/openrct2/platform/Posix.cpp index dcdc0b94a7..f9c2eb7d4b 100644 --- a/src/openrct2/platform/Posix.cpp +++ b/src/openrct2/platform/Posix.cpp @@ -353,7 +353,7 @@ time_t platform_file_get_modified_time(const utf8* path) return 100; } -uint8_t platform_get_locale_temperature_format() +TemperatureUnit platform_get_locale_temperature_format() { // LC_MEASUREMENT is GNU specific. # ifdef LC_MEASUREMENT @@ -367,10 +367,10 @@ uint8_t platform_get_locale_temperature_format() if (!fnmatch("*_US*", langstring, 0) || !fnmatch("*_BS*", langstring, 0) || !fnmatch("*_BZ*", langstring, 0) || !fnmatch("*_PW*", langstring, 0)) { - return TEMPERATURE_FORMAT_F; + return TemperatureUnit::Fahrenheit; } } - return TEMPERATURE_FORMAT_C; + return TemperatureUnit::Celsius; } uint8_t platform_get_locale_date_format() diff --git a/src/openrct2/platform/Windows.cpp b/src/openrct2/platform/Windows.cpp index 2bc9bdbe64..159e280c86 100644 --- a/src/openrct2/platform/Windows.cpp +++ b/src/openrct2/platform/Windows.cpp @@ -328,7 +328,7 @@ uint8_t platform_get_locale_measurement_format() } } -uint8_t platform_get_locale_temperature_format() +TemperatureUnit platform_get_locale_temperature_format() { UINT fahrenheit; @@ -337,13 +337,13 @@ uint8_t platform_get_locale_temperature_format() if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IMEASURE | LOCALE_RETURN_NUMBER, (LPSTR)&fahrenheit, sizeof(fahrenheit)) == 0) { // Assume celsius by default if function call fails - return TEMPERATURE_FORMAT_C; + return TemperatureUnit::Celsius; } if (fahrenheit) - return TEMPERATURE_FORMAT_F; + return TemperatureUnit::Fahrenheit; else - return TEMPERATURE_FORMAT_C; + return TemperatureUnit::Celsius; } uint8_t platform_get_locale_date_format() diff --git a/src/openrct2/platform/platform.h b/src/openrct2/platform/platform.h index f12f15685d..469852a78c 100644 --- a/src/openrct2/platform/platform.h +++ b/src/openrct2/platform/platform.h @@ -11,6 +11,7 @@ #define _PLATFORM_H_ #include "../common.h" +#include "../config/Config.h" #include #include @@ -116,7 +117,7 @@ uint8_t platform_get_locale_currency(); uint8_t platform_get_currency_value(const char* currencyCode); uint16_t platform_get_locale_language(); uint8_t platform_get_locale_measurement_format(); -uint8_t platform_get_locale_temperature_format(); +TemperatureUnit platform_get_locale_temperature_format(); uint8_t platform_get_locale_date_format(); bool platform_process_is_elevated(); bool platform_get_steam_path(utf8* outPath, size_t outSize);