@@ -56,7 +56,8 @@ EggAutonomous_Descriptor::EggAutonomous_Descriptor()
5656 " Automatically fetch+hatch eggs and keep all shinies." ,
5757 FeedbackType::REQUIRED,
5858 AllowCommandsWhenRunning::DISABLE_COMMANDS,
59- {SerialPABotBase::OLD_NINTENDO_SWITCH_DEFAULT_REQUIREMENTS}
59+ {ControllerFeature::NintendoSwitch_ProController},
60+ FasterIfTickPrecise::NOT_FASTER
6061 )
6162{}
6263
@@ -266,7 +267,7 @@ void EggAutonomous::program(SingleSwitchProgramEnvironment& env, ProControllerCo
266267 env.console
267268 );
268269 }
269- pbf_press_button (context, BUTTON_HOME, 160ms, GameSettings::instance ().GAME_TO_HOME_DELAY_SAFE0 );
270+ ssf_press_button (context, BUTTON_HOME, GameSettings::instance ().GAME_TO_HOME_DELAY_SAFE0 , 160ms );
270271 env.console .overlay ().add_log (" Reset game" , COLOR_WHITE);
271272 reset_game_from_home_with_inference (
272273 env.console , context,
@@ -309,13 +310,13 @@ bool EggAutonomous::run_batch(
309310 // Each iteration in the while-loop is made by:
310311 // - bike loops of LOOPS_PER_FETCH times. Bike loops begin at lady or nursery front door, end at lady.
311312 // - if not enough eggs fetched, talk to lady to try fetching an egg.
312- while (num_eggs_hatched < 5 || m_num_eggs_retrieved < 5 ){
313+ while (num_eggs_hatched < 5 || m_num_eggs_retrieved < 5 ){
313314 // Detect when Y-Comm icon disappears. This is the time an egg is hatching
314315 const bool y_comm_visible_when_egg_hatching = false ;
315316 YCommIconDetector egg_hatching_detector (y_comm_visible_when_egg_hatching);
316317
317318 bool restart_bike_loop = false ;
318- for (size_t i_bike_loop = 0 ; i_bike_loop < this ->LOOPS_PER_FETCH && bike_loop_count < MAX_BIKE_LOOP_COUNT;){
319+ for (size_t i_bike_loop = 0 ; i_bike_loop < this ->LOOPS_PER_FETCH && bike_loop_count < MAX_BIKE_LOOP_COUNT;){
319320 context.wait_for_all_requests ();
320321 // +1 here because video overlay is for general users. Genearl users start counts at 1, while us programmers start count at 0.
321322 if (restart_bike_loop){
@@ -384,7 +385,7 @@ bool EggAutonomous::run_batch(
384385 env.log (" Take a screenshot of party to debug." );
385386 // Now take a photo at the player's party for dumping debug info:
386387 // Enter Rotom Phone menu
387- pbf_press_button (context, BUTTON_X, 80ms , GameSettings::instance ().OVERWORLD_TO_MENU_DELAY0 );
388+ pbf_press_button (context, BUTTON_X, 160ms , GameSettings::instance ().OVERWORLD_TO_MENU_DELAY0 );
388389 // Select Pokemon App
389390 navigate_to_menu_app (env, env.console , context, POKEMON_APP_INDEX, NOTIFICATION_ERROR_RECOVERABLE);
390391 // From menu enter Pokemon App
@@ -451,8 +452,8 @@ void EggAutonomous::save_game(SingleSwitchProgramEnvironment& env, ProController
451452 env.log (" Save game." );
452453 env.console .overlay ().add_log (" Save game" , COLOR_WHITE);
453454 pbf_press_button (context, BUTTON_X, 80ms, GameSettings::instance ().OVERWORLD_TO_MENU_DELAY0 );
454- pbf_press_button (context, BUTTON_R, 10 , 2 * TICKS_PER_SECOND );
455- pbf_press_button (context, BUTTON_A, 10 , 5 * TICKS_PER_SECOND );
455+ pbf_press_button (context, BUTTON_R, 80ms, 2000ms );
456+ pbf_press_button (context, BUTTON_A, 80ms, 2000ms );
456457 wait_for_y_comm_icon (env, context, " Cannot detect end of saving game." );
457458}
458459
@@ -536,12 +537,12 @@ size_t EggAutonomous::talk_to_lady_to_fetch_egg(
536537 stats.m_fetch_success ++;
537538 env.update_stats ();
538539 // Press A to get the egg
539- ssf_press_button1 (context, BUTTON_A, 10 );
540+ ssf_press_button (context, BUTTON_A, 320ms, 160ms );
540541
541542 ret = run_until<ProControllerContext>(
542543 env.console , context,
543544 [](ProControllerContext& context){
544- pbf_mash_button (context, BUTTON_B, TICKS_PER_SECOND * 30 );
545+ pbf_mash_button (context, BUTTON_B, 30s );
545546 },
546547 {{dialog_over_detector}}
547548 );
@@ -551,7 +552,7 @@ size_t EggAutonomous::talk_to_lady_to_fetch_egg(
551552 ret = run_until<ProControllerContext>(
552553 env.console , context,
553554 [](ProControllerContext& context){
554- pbf_mash_button (context, BUTTON_B, TICKS_PER_SECOND * 30 );
555+ pbf_mash_button (context, BUTTON_B, 30s );
555556 },
556557 {{dialog_over_detector}}
557558 );
@@ -674,37 +675,37 @@ bool EggAutonomous::process_hatched_pokemon(
674675 send_keep_notification ();
675676
676677 // Press A twice to pick the pokemon
677- ssf_press_button (context, BUTTON_A, 480ms, EGG_BUTTON_HOLD_DELAY);
678- ssf_press_button (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
678+ ssf_press_button_ptv (context, BUTTON_A, 480ms, EGG_BUTTON_HOLD_DELAY);
679+ ssf_press_button_ptv (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
679680
680681 // Move it rightward, so that it stays on top of the box area
681- ssf_press_dpad (context, DPAD_RIGHT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
682+ ssf_press_dpad_ptv (context, DPAD_RIGHT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
682683 // Press Button L to change to the box on the left
683- ssf_press_button (context, BUTTON_L, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
684+ ssf_press_button_ptv (context, BUTTON_L, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
684685
685686 // Because we don't know which place in the box to place the pokemon, we will
686687 // throw the pokemon in the all-box view. So it automatically sit in the first empty slot
687688 // in the box:
688689
689690 // Move it three times upward, so that it stays on top of the "Box List" button
690- ssf_press_dpad (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
691- ssf_press_dpad (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
692- ssf_press_dpad (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
691+ ssf_press_dpad_ptv (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
692+ ssf_press_dpad_ptv (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
693+ ssf_press_dpad_ptv (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
693694
694695 // Press the button to go to box list view
695- ssf_press_button (context, BUTTON_A, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
696+ ssf_press_button_ptv (context, BUTTON_A, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
696697 // Press button A to drop the pokemon into the box
697- ssf_press_button (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
698+ ssf_press_button_ptv (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
698699 // Press button B to go back to the last box
699- ssf_press_button (context, BUTTON_B, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
700+ ssf_press_button_ptv (context, BUTTON_B, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
700701 // Press button R to change to the box on the right, the box with the next batch of eggs
701- ssf_press_button (context, BUTTON_R, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
702+ ssf_press_button_ptv (context, BUTTON_R, BOX_CHANGE_DELAY, EGG_BUTTON_HOLD_DELAY);
702703 // Move cursor left to point to the last slot in the party
703- ssf_press_dpad (context, DPAD_LEFT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
704+ ssf_press_dpad_ptv (context, DPAD_LEFT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
704705 // Move cursor downward three times so that it goes to the original place (second slot in the party)
705- ssf_press_dpad (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
706- ssf_press_dpad (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
707- ssf_press_dpad (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
706+ ssf_press_dpad_ptv (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
707+ ssf_press_dpad_ptv (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
708+ ssf_press_dpad_ptv (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
708709
709710 if (m_num_pokemon_kept >= MAX_KEEPERS){
710711 env.log (" Max keepers reached. Stopping program..." );
@@ -745,8 +746,8 @@ bool EggAutonomous::process_hatched_pokemon(
745746 dialog_detector.make_overlays (dialog_overlay_set);
746747
747748 // Move cursor upward two times to point to "Release" menu item
748- pbf_press_dpad (context, DPAD_UP, 20 , 10 );
749- pbf_press_dpad (context, DPAD_UP, 20 , 10 );
749+ pbf_press_dpad (context, DPAD_UP, 20 , 20 );
750+ pbf_press_dpad (context, DPAD_UP, 20 , 20 );
750751
751752 // Press A to release
752753 pbf_press_button (context, BUTTON_A, 20 , 105 );
@@ -793,8 +794,8 @@ bool EggAutonomous::process_hatched_pokemon(
793794 // Get eggs to party:
794795
795796 // Move cursor to the first slot in the box
796- ssf_press_dpad (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
797- ssf_press_dpad (context, DPAD_RIGHT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
797+ ssf_press_dpad_ptv (context, DPAD_UP, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
798+ ssf_press_dpad_ptv (context, DPAD_RIGHT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
798799
799800 // Press Y twice to change selection method to group selection
800801 pbf_press_button (context, BUTTON_Y, EGG_BUTTON_HOLD_DELAY, 400ms);
@@ -804,17 +805,17 @@ bool EggAutonomous::process_hatched_pokemon(
804805 pbf_press_button (context, BUTTON_A, EGG_BUTTON_HOLD_DELAY, 400ms);
805806 // Move down to selection the entire column
806807 for (size_t c = 0 ; c < 4 ; c++){
807- ssf_press_dpad (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
808+ ssf_press_dpad_ptv (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
808809 }
809810 // Press A to finish the selection
810- ssf_press_button (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
811+ ssf_press_button_ptv (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
811812
812813 // Move cursor to the second slot in the party
813- ssf_press_dpad (context, DPAD_LEFT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
814- ssf_press_dpad (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
814+ ssf_press_dpad_ptv (context, DPAD_LEFT, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
815+ ssf_press_dpad_ptv (context, DPAD_DOWN, BOX_SCROLL_DELAY, EGG_BUTTON_HOLD_DELAY);
815816
816817 // Press A to finish dropping the egg column
817- ssf_press_button (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
818+ ssf_press_button_ptv (context, BUTTON_A, BOX_PICKUP_DROP_DELAY, EGG_BUTTON_HOLD_DELAY);
818819
819820 // leave pokemon box, back to pokemon app
820821 ssf_press_button (context, BUTTON_B, GameSettings::instance ().BOX_TO_POKEMON_DELAY0 , EGG_BUTTON_HOLD_DELAY);
@@ -831,7 +832,7 @@ bool EggAutonomous::process_hatched_pokemon(
831832 const int ret = run_until<ProControllerContext>(
832833 env.console , context,
833834 [](ProControllerContext& context){
834- pbf_mash_button (context, BUTTON_B, 5 * TICKS_PER_SECOND );
835+ pbf_mash_button (context, BUTTON_B, 5000ms );
835836 },
836837 {{y_comm_detector}}
837838 );
0 commit comments