From 17cee5e0cd3b971909ce713a855def89323d88f5 Mon Sep 17 00:00:00 2001 From: pifopi Date: Wed, 19 Feb 2025 01:56:56 +0100 Subject: [PATCH] Improve reverse handling --- .../Programs/PokemonHome_BoxSorting.cpp | 49 +++++-------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/SerialPrograms/Source/PokemonHome/Programs/PokemonHome_BoxSorting.cpp b/SerialPrograms/Source/PokemonHome/Programs/PokemonHome_BoxSorting.cpp index e305fe7bb5..d007553017 100644 --- a/SerialPrograms/Source/PokemonHome/Programs/PokemonHome_BoxSorting.cpp +++ b/SerialPrograms/Source/PokemonHome/Programs/PokemonHome_BoxSorting.cpp @@ -193,69 +193,46 @@ bool operator<(const std::optional& lhs, const std::optional& } for (const BoxSortingSelection preference : *lhs->preferences){ + bool ret = true; switch(preference.sort_type){ // NOTE edit when adding new struct members case BoxSortingSortType::NationalDexNo: if (lhs->national_dex_number != rhs->national_dex_number){ - if (preference.reverse){ - return lhs->national_dex_number > rhs->national_dex_number; - }else{ - return lhs->national_dex_number < rhs->national_dex_number; - } + ret = lhs->national_dex_number < rhs->national_dex_number; } break; case BoxSortingSortType::Shiny: if (lhs->shiny != rhs->shiny){ - if (preference.reverse){ - return rhs->shiny; - }else{ - return lhs->shiny; - } + ret = lhs->shiny; } break; case BoxSortingSortType::Gigantamax: if (lhs->gmax != rhs->gmax){ - if (preference.reverse){ - return rhs->gmax; - }else{ - return lhs->gmax; - } + ret = lhs->gmax; } break; case BoxSortingSortType::Ball_Slug: if (lhs->ball_slug < rhs->ball_slug){ - if (preference.reverse){ - return false; - }else{ - return true; - } + ret = true; } if (lhs->ball_slug > rhs->ball_slug){ - if (preference.reverse){ - return true; - }else{ - return false; - } + ret = false; } break; case BoxSortingSortType::Gender: if (lhs->gender < rhs->gender){ - if (preference.reverse){ - return false; - }else{ - return true; - } + ret = true; } if (lhs->gender > rhs->gender){ - if (preference.reverse){ - return true; - } - else{ - return false; - } + ret = false; } break; } + if (preference.reverse){ + return !ret; + }else{ + return ret; + } } return lhs->national_dex_number < rhs->national_dex_number;