@@ -53,6 +53,34 @@ void print_splash_screen(const std::filesystem::path& assets_dir)
53
53
}
54
54
}
55
55
56
+ std::vector<models::Pokemon> load_main_menu (utils::Manifest manifest)
57
+ {
58
+ // 1. set difficulty
59
+ int selection{};
60
+ utils::print_enum_table ({" easy" , " moderate" , " hard" }, " difficulty" );
61
+ selection = utils::get_user_input<int >(" >>> " );
62
+ auto difficulty = (selection == 1 ) ? models::Difficulty::EASY : (selection == 2 ) ? models::Difficulty::MODERATE : models::Difficulty::HARD;
63
+
64
+ // 2. instantiate all available pokemons
65
+ std::vector<models::Pokemon> pkmns{};
66
+ pkmns.reserve (manifest.duplicates .size ());
67
+ std::for_each (manifest.duplicates .begin (), manifest.duplicates .end (),
68
+ [&manifest, &pkmns, &difficulty](int id) { pkmns.push_back (models::Pokemon (id, manifest.asset_dir , difficulty)); });
69
+
70
+ // 3. select pokemon
71
+ std::vector<std::string> names{};
72
+ names.reserve (pkmns.size ());
73
+ std::for_each (pkmns.begin (), pkmns.end (), [&names](models::Pokemon& pkmn) { names.push_back (pkmn.name ); });
74
+ utils::print_enum_table (names, " pokemons" );
75
+ selection = utils::get_user_input<int >(" >>> " );
76
+ models::Pokemon player = pkmns[selection - 1 ];
77
+
78
+ // 4. remove selection from pkmns, so that player won't fight against his doppelganger
79
+ pkmns.erase (std::remove_if (pkmns.begin (), pkmns.end (), [player](models::Pokemon pkmn) { return player.id == pkmn.id ; }), pkmns.end ());
80
+
81
+ return {player, pkmns.size () > 1 ? utils::random_choice (pkmns) : pkmns[0 ]};
82
+ }
83
+
56
84
void print_frame (models::Pokemon& pkmn1, models::Pokemon& pkmn2)
57
85
{
58
86
std::string healthbars{};
0 commit comments