diff --git a/src/openrct2-ui/windows/LoadSave.cpp b/src/openrct2-ui/windows/LoadSave.cpp index 4bd6619e1a..a54b1dbd3b 100644 --- a/src/openrct2-ui/windows/LoadSave.cpp +++ b/src/openrct2-ui/windows/LoadSave.cpp @@ -477,13 +477,13 @@ static void window_loadsave_mouseup(rct_window* w, rct_widgetindex widgetIndex) break; case WIDX_SORT_NAME: - if (gConfigGeneral.load_save_sort == SORT_NAME_ASCENDING) + if (gConfigGeneral.load_save_sort == Sort::NameAscending) { - gConfigGeneral.load_save_sort = SORT_NAME_DESCENDING; + gConfigGeneral.load_save_sort = Sort::NameDescending; } else { - gConfigGeneral.load_save_sort = SORT_NAME_ASCENDING; + gConfigGeneral.load_save_sort = Sort::NameAscending; } config_save_default(); window_loadsave_sort_list(); @@ -491,13 +491,13 @@ static void window_loadsave_mouseup(rct_window* w, rct_widgetindex widgetIndex) break; case WIDX_SORT_DATE: - if (gConfigGeneral.load_save_sort == SORT_DATE_DESCENDING) + if (gConfigGeneral.load_save_sort == Sort::DateDescending) { - gConfigGeneral.load_save_sort = SORT_DATE_ASCENDING; + gConfigGeneral.load_save_sort = Sort::DateAscending; } else { - gConfigGeneral.load_save_sort = SORT_DATE_DESCENDING; + gConfigGeneral.load_save_sort = Sort::DateDescending; } config_save_default(); window_loadsave_sort_list(); @@ -710,9 +710,9 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi) // Name button text rct_string_id id = STR_NONE; - if (gConfigGeneral.load_save_sort == SORT_NAME_ASCENDING) + if (gConfigGeneral.load_save_sort == Sort::NameAscending) id = STR_UP; - else if (gConfigGeneral.load_save_sort == SORT_NAME_DESCENDING) + else if (gConfigGeneral.load_save_sort == Sort::NameDescending) id = STR_DOWN; // Draw name button indicator. @@ -721,9 +721,9 @@ static void window_loadsave_paint(rct_window* w, rct_drawpixelinfo* dpi) dpi, STR_NAME, &id, COLOUR_GREY, w->windowPos + ScreenCoordsXY{ sort_name_widget.left + 11, sort_name_widget.top + 1 }); // Date button text - if (gConfigGeneral.load_save_sort == SORT_DATE_ASCENDING) + if (gConfigGeneral.load_save_sort == Sort::DateAscending) id = STR_UP; - else if (gConfigGeneral.load_save_sort == SORT_DATE_DESCENDING) + else if (gConfigGeneral.load_save_sort == Sort::DateDescending) id = STR_DOWN; else id = STR_NONE; @@ -797,13 +797,13 @@ static bool list_item_sort(LoadSaveListItem& a, LoadSaveListItem& b) switch (gConfigGeneral.load_save_sort) { - case SORT_NAME_ASCENDING: + case Sort::NameAscending: return strlogicalcmp(a.name.c_str(), b.name.c_str()) < 0; - case SORT_NAME_DESCENDING: + case Sort::NameDescending: return -strlogicalcmp(a.name.c_str(), b.name.c_str()) < 0; - case SORT_DATE_DESCENDING: + case Sort::DateDescending: return -difftime(a.date_modified, b.date_modified) < 0; - case SORT_DATE_ASCENDING: + case Sort::DateAscending: return difftime(a.date_modified, b.date_modified) < 0; default: return strlogicalcmp(a.name.c_str(), b.name.c_str()) < 0; diff --git a/src/openrct2/config/Config.cpp b/src/openrct2/config/Config.cpp index 66f1105ae0..7e60af7326 100644 --- a/src/openrct2/config/Config.cpp +++ b/src/openrct2/config/Config.cpp @@ -101,6 +101,13 @@ namespace Config ConfigEnumEntry("SMOOTH_NEAREST_NEIGHBOUR", ScaleQuality::SmoothNearestNeighbour), }); + static const auto Enum_Sort = ConfigEnum({ + ConfigEnumEntry("NAME_ASCENDING", Sort::NameAscending), + ConfigEnumEntry("NAME_DESCENDING", Sort::NameDescending), + ConfigEnumEntry("DATE_ASCENDING", Sort::DateAscending), + ConfigEnumEntry("DATE_DESCENDING", Sort::DateDescending), + }); + static const auto Enum_VirtualFloorStyle = ConfigEnum({ ConfigEnumEntry("OFF", VirtualFloorStyles::Off), ConfigEnumEntry("CLEAR", VirtualFloorStyles::Clear), @@ -183,7 +190,7 @@ namespace Config model->default_inspection_interval = reader->GetInt32("default_inspection_interval", 2); model->last_run_version = reader->GetCString("last_run_version", nullptr); model->invert_viewport_drag = reader->GetBoolean("invert_viewport_drag", false); - model->load_save_sort = reader->GetInt32("load_save_sort", SORT_NAME_ASCENDING); + model->load_save_sort = reader->GetEnum("load_save_sort", Sort::NameAscending, Enum_Sort); model->minimize_fullscreen_focus_loss = reader->GetBoolean("minimize_fullscreen_focus_loss", true); model->disable_screensaver = reader->GetBoolean("disable_screensaver", true); @@ -263,7 +270,7 @@ namespace Config writer->WriteInt32("default_inspection_interval", model->default_inspection_interval); writer->WriteString("last_run_version", model->last_run_version); writer->WriteBoolean("invert_viewport_drag", model->invert_viewport_drag); - writer->WriteInt32("load_save_sort", model->load_save_sort); + writer->WriteEnum("load_save_sort", model->load_save_sort, Enum_Sort); writer->WriteBoolean("minimize_fullscreen_focus_loss", model->minimize_fullscreen_focus_loss); writer->WriteBoolean("disable_screensaver", model->disable_screensaver); writer->WriteBoolean("day_night_cycle", model->day_night_cycle); diff --git a/src/openrct2/config/Config.h b/src/openrct2/config/Config.h index 9e523d6225..3766743c30 100644 --- a/src/openrct2/config/Config.h +++ b/src/openrct2/config/Config.h @@ -18,6 +18,7 @@ enum class MeasurementFormat : int32_t; enum class TemperatureUnit : int32_t; enum class ScaleQuality : int32_t; +enum class Sort : int32_t; enum class VirtualFloorStyles : int32_t; enum class DrawingEngine : int32_t; @@ -98,7 +99,7 @@ struct GeneralConfiguration // Loading and saving bool confirmation_prompt; - int32_t load_save_sort; + Sort load_save_sort; utf8* last_save_game_directory; utf8* last_save_landscape_directory; utf8* last_save_scenario_directory; @@ -207,12 +208,12 @@ struct PluginConfiguration std::string allowed_hosts; }; -enum SORT +enum class Sort : int32_t { - SORT_NAME_ASCENDING, - SORT_NAME_DESCENDING, - SORT_DATE_ASCENDING, - SORT_DATE_DESCENDING, + NameAscending, + NameDescending, + DateAscending, + DateDescending, }; enum class TemperatureUnit : int32_t