Skip to content

Commit 5e09f3e

Browse files
committed
Add Sorting by Origin Mark
1 parent ec1e9a2 commit 5e09f3e

6 files changed

Lines changed: 34 additions & 2 deletions

File tree

SerialPrograms/Source/Pokemon/Options/Pokemon_BoxSortingTable.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const EnumDropdownDatabase<SortingRuleType>& SortingRuleType_Database(){
1818
{SortingRuleType::Alpha, "alpha", "Alpha"},
1919
{SortingRuleType::Ball_Slug, "ball_slug", "Ball Type"},
2020
{SortingRuleType::Gender, "gender", "Gender (Male, Female, Genderless)"},
21+
{SortingRuleType::Origin_Mark, "origin_mark", "Origin Mark"},
2122
//{SortingRuleType::Type, "type", "Types"}, Mainly used for testing. The order of the PokemonType Enum is not the most intuitive for sorting.
2223
});
2324
return database;

SerialPrograms/Source/Pokemon/Options/Pokemon_BoxSortingTable.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ enum class SortingRuleType
2525
Gender,
2626
Type,
2727
Tera_Type,
28+
Origin_Mark,
2829
};
2930

3031
struct SortingRule

SerialPrograms/Source/Pokemon/Pokemon_CollectedPokemonInfo.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ bool operator==(const CollectedPokemonInfo& lhs, const CollectedPokemonInfo& rhs
3030
lhs.ot_name == rhs.ot_name &&
3131
lhs.primary_type == rhs.primary_type &&
3232
lhs.secondary_type == rhs.secondary_type &&
33-
lhs.tera_type == rhs.tera_type;
33+
lhs.tera_type == rhs.tera_type &&
34+
lhs.origin_mark == rhs.origin_mark;
3435
}
3536

3637

@@ -89,6 +90,11 @@ bool operator<(const std::optional<CollectedPokemonInfo>& lhs, const std::option
8990
return (lhs->tera_type < rhs->tera_type) != preference.reverse;
9091
}
9192
break;
93+
case SortingRuleType::Origin_Mark:
94+
if (lhs->origin_mark != rhs->origin_mark){
95+
return (lhs->origin_mark < rhs->origin_mark) != preference.reverse;
96+
}
97+
break;
9298
default:
9399
throw InternalProgramError(nullptr, PA_CURRENT_FUNCTION, "unknown SortingRuleType");
94100
} // end switch
@@ -114,6 +120,7 @@ std::ostream& operator<<(std::ostream& os, const std::optional<CollectedPokemonI
114120
os << "primaryType:" << POKEMON_TYPE_SLUGS().get_string(pokemon->primary_type) << " ";
115121
os << "secondaryType:" << POKEMON_TYPE_SLUGS().get_string(pokemon->secondary_type) << " ";
116122
os << "teraType:" << POKEMON_TERA_TYPE_SLUGS().get_string(pokemon->tera_type) << " ";
123+
os << "originMark:" << ORIGIN_MARK_SLUGS().get_string(pokemon->origin_mark) << " ";
117124
os << ")";
118125
}else{
119126
os << "(empty)";
@@ -168,6 +175,7 @@ void save_boxes_data_to_json(const std::vector<std::optional<CollectedPokemonInf
168175
pokemon["primary_type"] = POKEMON_TYPE_SLUGS().get_string(current_pokemon->primary_type);
169176
pokemon["secondary_type"] = POKEMON_TYPE_SLUGS().get_string(current_pokemon->secondary_type);
170177
pokemon["tera_type"] = POKEMON_TERA_TYPE_SLUGS().get_string(current_pokemon->tera_type);
178+
pokemon["origin_mark"] = ORIGIN_MARK_SLUGS().get_string(current_pokemon->origin_mark);
171179
}
172180
pokemon_data.push_back(std::move(pokemon));
173181
}

SerialPrograms/Source/Pokemon/Pokemon_CollectedPokemonInfo.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <ostream>
1515
#include "Pokemon/Options/Pokemon_StatsHuntFilter.h"
1616
#include "Pokemon/Options/Pokemon_BoxSortingTable.h"
17+
#include "Pokemon_OriginMarks.h"
1718
#include "Pokemon_Types.h"
1819

1920
namespace PokemonAutomation{
@@ -36,6 +37,7 @@ struct CollectedPokemonInfo{
3637
PokemonType primary_type = PokemonType::NONE;
3738
PokemonType secondary_type = PokemonType::NONE;
3839
PokemonTeraType tera_type = PokemonTeraType::NONE;
40+
OriginMark origin_mark = OriginMark::NONE;
3941
};
4042

4143
bool operator==(const CollectedPokemonInfo& lhs, const CollectedPokemonInfo& rhs);

SerialPrograms/Source/PokemonHome/Inference/PokemonHome_OriginMarkReader.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,20 @@ const MarkIconMatcher& MarkIcon_Alola(){
8383
return ret;
8484
}
8585

86+
const MarkIconMatcher& MarkIcon_GameBoy(){
87+
static MarkIconMatcher ret(
88+
"PokemonHome/OriginMarks/gameboy.png",
89+
"gameboy",
90+
Color(0xff61645b), Color(0xff646664),
91+
10,
92+
30.0,
93+
{
94+
{0xff61645b, 0xff646664},
95+
}
96+
);
97+
return ret;
98+
}
99+
86100
const MarkIconMatcher& MarkIcon_Go(){
87101
static MarkIconMatcher ret(
88102
"PokemonHome/OriginMarks/go.png",
@@ -187,6 +201,7 @@ const std::vector<const MarkIconMatcher*>& ALL_ORIGIN_MARK_MATCHERS(){
187201
static const std::vector<const MarkIconMatcher*> matchers = {
188202
&MarkIcon_Kalos(),
189203
&MarkIcon_Alola(),
204+
&MarkIcon_GameBoy(),
190205
&MarkIcon_Go(),
191206
&MarkIcon_Lgpe(),
192207
&MarkIcon_Galar(),
@@ -204,6 +219,8 @@ const MarkIconMatcher& get_mark_icon_matcher(OriginMark mark){
204219
return MarkIcon_Kalos();
205220
case OriginMark::ALOLA:
206221
return MarkIcon_Alola();
222+
case OriginMark::GAMEBOY:
223+
return MarkIcon_GameBoy();
207224
case OriginMark::GO:
208225
return MarkIcon_Go();
209226
case OriginMark::LGPE:

SerialPrograms/Source/PokemonHome/Programs/PokemonHome_BoxNavigation.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "PokemonHome/Inference/PokemonHome_BallReader.h"
3030
#include "PokemonHome/Inference/PokemonHome_BoxGenderDetector.h"
3131
#include "PokemonHome/Inference/PokemonHome_GigantamaxDetector.h"
32+
#include "PokemonHome/Inference/PokemonHome_OriginMarkReader.h"
3233
#include "PokemonHome/Inference/PokemonHome_TeraTypeReader.h"
3334
#include "PokemonHome_BoxNavigation.h"
3435

@@ -229,7 +230,7 @@ void read_summary_screen(
229230
ImageFloatBox national_dex_number_box(0.448, 0.245, 0.049, 0.04); //pokemon national dex number pos
230231
ImageFloatBox shiny_symbol_box(0.702, 0.09, 0.04, 0.06); // shiny symbol pos
231232
ImageFloatBox gmax_tera_symbol_box(0.463, 0.09, 0.04, 0.06); // gmax OR tera symbol pos
232-
ImageFloatBox origin_symbol_box(0.623, 0.095, 0.033, 0.05); // origin symbol pos
233+
ImageFloatBox origin_symbol_box(0.617, 0.084, 0.044, 0.069); // origin symbol pos
233234
ImageFloatBox pokemon_box(0.69, 0.18, 0.28, 0.46); // pokemon render pos
234235
ImageFloatBox level_box(0.546, 0.099, 0.044, 0.041); // Level
235236
ImageFloatBox ot_id_box(0.782, 0.719, 0.193, 0.046); // OT ID
@@ -333,6 +334,8 @@ void read_summary_screen(
333334
cur_pokemon_info.ot_name = normalized;
334335
}
335336

337+
cur_pokemon_info.origin_mark = OriginMarkReader().read_mark(screen, origin_symbol_box);
338+
336339
env.add_overlay_log(create_overlay_info(cur_pokemon_info));
337340
video_overlay_set.clear();
338341

0 commit comments

Comments
 (0)