From 63f97f318abf92b3932c149d2a94ffb6f7f08800 Mon Sep 17 00:00:00 2001 From: jw098 Date: Tue, 21 Oct 2025 23:08:44 -0700 Subject: [PATCH 1/6] Autostory refactor. create Checkpoint classes. Create Checkpoints database. --- .../AutoStory/PokemonSV_AutoStory.cpp | 100 ++++++++++++++++-- .../Programs/AutoStory/PokemonSV_AutoStory.h | 6 ++ .../AutoStory/PokemonSV_AutoStoryTools.h | 13 +++ .../PokemonSV_AutoStory_Segment_34.cpp | 29 ++++- .../PokemonSV_AutoStory_Segment_34.h | 38 ++++--- 5 files changed, 164 insertions(+), 22 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp index d80e43b340..a261b25fdb 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp @@ -170,6 +170,66 @@ const StringSelectDatabase& MAINSTORY_SEGMENTS_SELECT_DATABASE(){ return database; } +std::vector> make_autoStory_checkpoint_list(){ + std::vector> checkpoint_list; + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + return checkpoint_list; +}; + +const std::vector>& ALL_AUTO_STORY_CHECKPOINT_LIST(){ + static std::vector> checkpoint_list = make_autoStory_checkpoint_list(); + return checkpoint_list; +} + +StringSelectDatabase make_all_checkpoints_database(){ + StringSelectDatabase ret; + int index_num = 0; + for (const auto& segment : ALL_AUTO_STORY_CHECKPOINT_LIST()){ + ret.add_entry(StringSelectEntry(std::to_string(index_num), segment->name())); + index_num++; + } + return ret; +} +const StringSelectDatabase& ALL_CHECKPOINTS_SELECT_DATABASE(){ + static StringSelectDatabase database = make_all_checkpoints_database(); + return database; +} + +StringSelectDatabase make_tutorial_checkpoints_database(){ + StringSelectDatabase ret; + const StringSelectDatabase& all_segments = ALL_CHECKPOINTS_SELECT_DATABASE(); + size_t start = 0; + size_t end = all_segments.case_list().size(); // INDEX_OF_LAST_TUTORIAL_SEGMENT + 1; + for (size_t i = start; i < end; i++){ + const auto& segment = all_segments[i]; + ret.add_entry(segment); + } + return ret; +} + +const StringSelectDatabase& TUTORIAL_CHECKPOINTS_SELECT_DATABASE(){ + static StringSelectDatabase database = make_tutorial_checkpoints_database(); + return database; +} + +StringSelectDatabase make_mainstory_checkpoints_database(){ + StringSelectDatabase ret; + const StringSelectDatabase& all_segments = ALL_CHECKPOINTS_SELECT_DATABASE(); + size_t start = 0; // INDEX_OF_LAST_TUTORIAL_SEGMENT + 1; + size_t end = all_segments.case_list().size(); + for (size_t i = start; i < end; i++){ + const auto& segment = all_segments[i]; + ret.add_entry(segment); + } + return ret; +} + +const StringSelectDatabase& MAINSTORY_CHECKPOINTS_SELECT_DATABASE(){ + static StringSelectDatabase database = make_mainstory_checkpoints_database(); + return database; +} AutoStory_Descriptor::AutoStory_Descriptor() : SingleSwitchProgramDescriptor( @@ -222,29 +282,53 @@ AutoStory::AutoStory() StorySection::TUTORIAL ) , STARTPOINT_TUTORIAL( - "Start Point:", //
Program will start with this segment. + "Start Segment:", //
Program will start with this segment. TUTORIAL_SEGMENTS_SELECT_DATABASE(), LockMode::LOCK_WHILE_RUNNING, "0" ) , ENDPOINT_TUTORIAL( - "End Point:", //
Program will stop after completing this segment. + "End Segment:", //
Program will stop after completing this segment. TUTORIAL_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, "9" ) , STARTPOINT_MAINSTORY( - "Start Point:", //
Program will start with this segment. + "Start Segment:", //
Program will start with this segment. MAINSTORY_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, "10" ) , ENDPOINT_MAINSTORY( - "End Point:", //
Program will stop after completing this segment. + "End Segment:", //
Program will stop after completing this segment. MAINSTORY_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, "10" ) + , START_CHECKPOINT_TUTORIAL( + "Start Checkpoint:", //
Program will start with this checkpoint. + TUTORIAL_CHECKPOINTS_SELECT_DATABASE(), + LockMode::LOCK_WHILE_RUNNING, + "0" + ) + , END_CHECKPOINT_TUTORIAL( + "End Checkpoint:", //
Program will stop after completing this checkpoint. + TUTORIAL_CHECKPOINTS_SELECT_DATABASE(), + LockMode::UNLOCK_WHILE_RUNNING, + "2" //TODO: update this + ) + , START_CHECKPOINT_MAINSTORY( + "Start Checkpoint:", //
Program will start with this checkpoint. + MAINSTORY_CHECKPOINTS_SELECT_DATABASE(), + LockMode::LOCK_WHILE_RUNNING, + "0" //TODO: update this + ) + , END_CHECKPOINT_MAINSTORY( + "End Checkpoint:", //
Program will stop after completing this checkpoint. + MAINSTORY_CHECKPOINTS_SELECT_DATABASE(), + LockMode::UNLOCK_WHILE_RUNNING, + "2" //TODO: update this + ) , SETUP_NOTE{ "NOTE: Make sure you have selected the correct Start Point. " "Make sure your player character is in the exact correct start position for that Start Point, " @@ -516,6 +600,10 @@ AutoStory::AutoStory() PA_ADD_OPTION(ENDPOINT_MAINSTORY); PA_ADD_OPTION(END_DESCRIPTION); PA_ADD_OPTION(STARTERCHOICE); + + PA_ADD_OPTION(START_CHECKPOINT_TUTORIAL); + PA_ADD_OPTION(END_CHECKPOINT_TUTORIAL); + PA_ADD_OPTION(GO_HOME_WHEN_DONE); PA_ADD_OPTION(NOTIFICATIONS); @@ -799,7 +887,7 @@ std::string AutoStory::start_segment_description(){ }else if (STORY_SECTION == StorySection::MAIN_STORY){ segment_index = STARTPOINT_MAINSTORY.index() + (INDEX_OF_LAST_TUTORIAL_SEGMENT + 1); } - return ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->start_text(); + return " " + ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->start_text(); } std::string AutoStory::end_segment_description(){ @@ -809,7 +897,7 @@ std::string AutoStory::end_segment_description(){ }else if (STORY_SECTION == StorySection::MAIN_STORY){ segment_index = ENDPOINT_MAINSTORY.index() + (INDEX_OF_LAST_TUTORIAL_SEGMENT + 1); } - return ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->end_text(); + return " " + ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->end_text(); } size_t AutoStory::get_start_segment_index(){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h index d4bb4cac38..911ae7a3d6 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h @@ -77,6 +77,12 @@ class AutoStory : public SingleSwitchProgramInstance, public ConfigOption::Liste StringSelectOption STARTPOINT_MAINSTORY; StringSelectOption ENDPOINT_MAINSTORY; + StringSelectOption START_CHECKPOINT_TUTORIAL; + StringSelectOption END_CHECKPOINT_TUTORIAL; + + StringSelectOption START_CHECKPOINT_MAINSTORY; + StringSelectOption END_CHECKPOINT_MAINSTORY; + StaticTextOption SETUP_NOTE; StaticTextOption MAINSTORY_NOTE; diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h index f8a69121b6..e3f31b7253 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h @@ -95,6 +95,19 @@ class AutoStory_Segment { AutoStoryStats& stats) const = 0; }; +class AutoStory_Checkpoint { +public: + virtual ~AutoStory_Checkpoint() = default; + virtual std::string name() const = 0; + virtual std::string start_text() const = 0; + virtual std::string end_text() const = 0; + virtual void run_checkpoint( + SingleSwitchProgramEnvironment& env, + ProControllerContext& context, + AutoStoryOptions options, + AutoStoryStats& stats) const = 0; +}; + // press A to clear tutorial screens // throw exception if tutorial screen never detected diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp index afd5f9c503..cf529159c2 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp @@ -53,15 +53,38 @@ void AutoStory_Segment_34::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_90(env, context, options.notif_status_update, stats); - checkpoint_91(env, context, options.notif_status_update, stats); - checkpoint_92(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_90().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_91().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_92().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +static constexpr std::string segment_num = "34"; + +std::string AutoStory_Checkpoint_90::name() const{ return "90 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_90::start_text() const{ return segment_num + ": Beat Geeta. At Pokemon League Pokecenter.";} +std::string AutoStory_Checkpoint_90::end_text() const{ return segment_num + ": Beat Nemona. At dormitory room, next to bed.";} +void AutoStory_Checkpoint_90::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_90(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_91::name() const{ return "91 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_91::start_text() const{ return AutoStory_Checkpoint_90().end_text();} +std::string AutoStory_Checkpoint_91::end_text() const{ return segment_num + ": Beat Penny. At Academy fly point.";} +void AutoStory_Checkpoint_91::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_91(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_92::name() const{ return "92 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_92::start_text() const{ return AutoStory_Checkpoint_91().end_text();} +std::string AutoStory_Checkpoint_92::end_text() const{ return segment_num + ": Beat Arven. At Los Platos Pokecenter.";} +void AutoStory_Checkpoint_92::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_92(env, context, options.notif_status_update, stats); +} + void checkpoint_90(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.h index b2d6149b6e..446c41d488 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.h @@ -26,40 +26,52 @@ class AutoStory_Segment_34 : public AutoStory_Segment{ ) const override; }; -static constexpr const char* segment_num = "34"; +class AutoStory_Checkpoint_90 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_91 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_92 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + -inline std::string checkpoint90_start(){ return std::string(segment_num) + ": Beat Geeta. At Pokemon League Pokecenter.";} -inline std::string checkpoint90_end(){ return std::string(segment_num) + ": Beat Nemona. At dormitory room, next to bed.";} // start: Beat Geeta. At Pokemon League Pokecenter. // end: Beat Nemona. At dormitory room, next to bed. void checkpoint_90(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -inline std::string checkpoint91_start(){ return checkpoint90_end();} -inline std::string checkpoint91_end(){ return std::string(segment_num) + ": Beat Penny. At Academy fly point.";} // start: Beat Nemona. At dormitory room, next to bed." // end: Beat Penny. At Academy fly point. void checkpoint_91(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -inline std::string checkpoint92_start(){ return checkpoint91_end();} -inline std::string checkpoint92_end(){ return std::string(segment_num) + ": Beat Arven. At Los Platos Pokecenter.";} // start: Beat Penny. At Academy fly point. // end: Beat Arven. At Los Platos Pokecenter. void checkpoint_92(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -// std::string checkpoint_start(){ return segment_num + "";} -// std::string checkpoint_end(){ return segment_num + "";} // start: // end: void checkpoint_93(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -// std::string checkpoint_start(){ return segment_num + "";} -// std::string checkpoint_end(){ return segment_num + "";} // start: // end: void checkpoint_94(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -// std::string checkpoint_start(){ return segment_num + "";} -// std::string checkpoint_end(){ return segment_num + "";} // start: // end: void checkpoint_95(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); From 32849a2bd0b0f67838977509755e6b56f15ae4aa Mon Sep 17 00:00:00 2001 From: jw098 Date: Thu, 23 Oct 2025 23:35:59 -0700 Subject: [PATCH 2/6] add checkpoint class, until checkpoint 20 --- .../PokemonSV_AutoStory_Segment_00.cpp | 12 +++-- .../PokemonSV_AutoStory_Segment_00.h | 9 ++++ .../PokemonSV_AutoStory_Segment_01.cpp | 31 +++++++++++-- .../PokemonSV_AutoStory_Segment_01.h | 25 ++++++++++ .../PokemonSV_AutoStory_Segment_02.cpp | 14 ++++-- .../PokemonSV_AutoStory_Segment_02.h | 8 ++++ .../PokemonSV_AutoStory_Segment_03.cpp | 30 ++++++++++-- .../PokemonSV_AutoStory_Segment_03.h | 24 ++++++++++ .../PokemonSV_AutoStory_Segment_04.cpp | 15 ++++-- .../PokemonSV_AutoStory_Segment_04.h | 7 +++ .../PokemonSV_AutoStory_Segment_05.cpp | 24 ++++++++-- .../PokemonSV_AutoStory_Segment_05.h | 15 ++++++ .../PokemonSV_AutoStory_Segment_06.cpp | 13 ++++-- .../PokemonSV_AutoStory_Segment_06.h | 8 ++++ .../PokemonSV_AutoStory_Segment_07.cpp | 15 ++++-- .../PokemonSV_AutoStory_Segment_07.h | 8 ++++ .../PokemonSV_AutoStory_Segment_08.cpp | 35 ++++++++++++-- .../PokemonSV_AutoStory_Segment_08.h | 24 ++++++++++ .../PokemonSV_AutoStory_Segment_09.cpp | 46 +++++++++++++++++-- .../PokemonSV_AutoStory_Segment_09.h | 41 +++++++++++++++++ .../PokemonSV_AutoStory_Segment_34.cpp | 10 ++-- 21 files changed, 369 insertions(+), 45 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.cpp index f0b95af620..601072bfea 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.cpp @@ -42,14 +42,20 @@ void AutoStory_Segment_00::run_segment( ) const{ context.wait_for_all_requests(); - env.console.log("Start Segment 00: Intro Cutscene", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_00(env, context); + AutoStory_Checkpoint_00().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 00: Intro Cutscene", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_00::name() const{ return "000 - " + AutoStory_Segment_00().name(); } +std::string AutoStory_Checkpoint_00::start_text() const{ return "After selecting character name, style and the cutscene has started.";} +std::string AutoStory_Checkpoint_00::end_text() const{ return "Done cutscene. Stood up from chair. Walked to left side of room.";} +void AutoStory_Checkpoint_00::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_00(env, context); +} void checkpoint_00(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.h index a443226fc7..0f836063c6 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_00.h @@ -26,6 +26,15 @@ class AutoStory_Segment_00 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_00 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: after selecting character name, style and the cutscene has started // end: stood up from chair. Walked to left side of room. void checkpoint_00(SingleSwitchProgramEnvironment& env, ProControllerContext& context); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.cpp index 7a5b28c40d..478631ff0d 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.cpp @@ -56,15 +56,36 @@ void AutoStory_Segment_01::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 01: Pick Starter", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_01().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_02().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_03().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_01::name() const{ return "001 - " + AutoStory_Segment_01().name(); } +std::string AutoStory_Checkpoint_01::start_text() const{ return "Done cutscene. Stood up from chair. Walked to left side of room.";} +std::string AutoStory_Checkpoint_01::end_text() const{ return "Standing in room. Updated settings";} +void AutoStory_Checkpoint_01::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_01(env, context, options.notif_status_update, stats, options.language); - checkpoint_02(env, context, options.notif_status_update, stats); - checkpoint_03(env, context, options.notif_status_update, stats, options.language, options.starter_choice); +} - context.wait_for_all_requests(); - env.console.log("End Segment 01: Pick Starter", COLOR_GREEN); +std::string AutoStory_Checkpoint_02::name() const{ return "002 - " + AutoStory_Segment_01().name(); } +std::string AutoStory_Checkpoint_02::start_text() const{ return AutoStory_Checkpoint_01().end_text();} +std::string AutoStory_Checkpoint_02::end_text() const{ return "Standing in front of the 'power of science' NPC. Cleared map tutorial.";} +void AutoStory_Checkpoint_02::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_02(env, context, options.notif_status_update, stats); +} +std::string AutoStory_Checkpoint_03::name() const{ return "003 - " + AutoStory_Segment_01().name(); } +std::string AutoStory_Checkpoint_03::start_text() const{ return AutoStory_Checkpoint_02().end_text();} +std::string AutoStory_Checkpoint_03::end_text() const{ return "Received starter Pokemon. Changed move order. Cleared autoheal tutorial.";} +void AutoStory_Checkpoint_03::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_03(env, context, options.notif_status_update, stats, options.language, options.starter_choice); } diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.h index 420167cd35..64b68adaca 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_01.h @@ -26,6 +26,31 @@ class AutoStory_Segment_01 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_01 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_02 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + +class AutoStory_Checkpoint_03 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: stood up from chair. Walked to left side of room. // end: standing in room. updated settings void checkpoint_01( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.cpp index 007694d30d..69f7646b37 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.cpp @@ -51,13 +51,21 @@ void AutoStory_Segment_02::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 02: First Nemona Battle", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_04(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_04().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 02: First Nemona Battle", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_04::name() const{ return "004 - " + AutoStory_Segment_02().name(); } +std::string AutoStory_Checkpoint_04::start_text() const{ return "Received starter Pokemon. Changed move order. Cleared autoheal tutorial.";} +std::string AutoStory_Checkpoint_04::end_text() const{ return "Battled Nemona on the beach.";} +void AutoStory_Checkpoint_04::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_04(env, context, options.notif_status_update, stats); } diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.h index 6f3055ca81..2e87b2ce59 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_02.h @@ -26,6 +26,14 @@ class AutoStory_Segment_02 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_04 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: Received starter pokemon and changed move order. Cleared autoheal tutorial. // end: Battled Nemona on the beach. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.cpp index a8952586f0..6f27cb418b 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.cpp @@ -46,17 +46,37 @@ void AutoStory_Segment_03::run_segment(SingleSwitchProgramEnvironment& env, ProC stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 03: Catch Tutorial", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_05(env, context, options.notif_status_update, stats); - checkpoint_06(env, context, options.notif_status_update, stats); - checkpoint_07(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_05().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_06().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_07().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 03: Catch Tutorial", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_05::name() const{ return "005 - " + AutoStory_Segment_03().name(); } +std::string AutoStory_Checkpoint_05::start_text() const{ return "Battled Nemona on the beach.";} +std::string AutoStory_Checkpoint_05::end_text() const{ return "Met mom at gate. Received mom's sandwich.";} +void AutoStory_Checkpoint_05::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_05(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_06::name() const{ return "006 - " + AutoStory_Segment_03().name(); } +std::string AutoStory_Checkpoint_06::start_text() const{ return AutoStory_Checkpoint_05().end_text();} +std::string AutoStory_Checkpoint_06::end_text() const{ return "Cleared catch tutorial.";} +void AutoStory_Checkpoint_06::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_06(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_07::name() const{ return "007 - " + AutoStory_Segment_03().name(); } +std::string AutoStory_Checkpoint_07::start_text() const{ return AutoStory_Checkpoint_06().end_text();} +std::string AutoStory_Checkpoint_07::end_text() const{ return "Moved to cliff. Heard mystery cry. Standing in front of Nemona near the cliff.";} +void AutoStory_Checkpoint_07::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_07(env, context, options.notif_status_update, stats); +} void checkpoint_05( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.h index e58b4ea007..2a054bd522 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_03.h @@ -25,6 +25,30 @@ class AutoStory_Segment_03 : public AutoStory_Segment{ AutoStoryStats& stats) const override; }; +class AutoStory_Checkpoint_05 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_06 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_07 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: Battled Nemona on the beach. // end: Met mom at gate. Received mom's sandwich. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.cpp index e38d58e6d8..4cda8266ca 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.cpp @@ -52,15 +52,24 @@ void AutoStory_Segment_04::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 04: Rescue Legendary", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_08(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_08().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 04: Rescue Legendary", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} +std::string AutoStory_Checkpoint_08::name() const{ return "008 - " + AutoStory_Segment_04().name(); } +std::string AutoStory_Checkpoint_08::start_text() const{ return "Moved to cliff. Heard mystery cry. Standing in front of Nemona near the cliff.";} +std::string AutoStory_Checkpoint_08::end_text() const{ return "Rescued Koraidon/Miraidon and escaped from the Houndoom Cave. Standing next to Koraidon/Miraidon just outside the cave exit.";} +void AutoStory_Checkpoint_08::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_08(env, context, options.notif_status_update, stats); } + + void checkpoint_08( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.h index 0abc99a9a0..81c1eee219 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_04.h @@ -26,6 +26,13 @@ class AutoStory_Segment_04 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_08 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; // start: Moved to cliff. Heard mystery cry. Standing in front of Nemona near the cliff. // end: Rescued Koraidon/Miraidon and escaped from the Houndoom Cave. Standing next to Koraidon/Miraidon just outside the cave exit. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.cpp index f816d38bb3..a4b4c76f82 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.cpp @@ -51,17 +51,33 @@ void AutoStory_Segment_05::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 05: First Arven Battle", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_09(env, context, options.notif_status_update, stats); - checkpoint_10(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_09().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_10().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 05: First Arven Battle", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_09::name() const{ return "009 - " + AutoStory_Segment_05().name(); } +std::string AutoStory_Checkpoint_09::start_text() const{ return "Rescued Koraidon/Miraidon and escaped from the Houndoom Cave. Standing next to Koraidon/Miraidon just outside the cave exit.";} +std::string AutoStory_Checkpoint_09::end_text() const{ return "Battled Arven and received Legendary's Pokeball.";} +void AutoStory_Checkpoint_09::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_09(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_10::name() const{ return "010 - " + AutoStory_Segment_05().name(); } +std::string AutoStory_Checkpoint_10::start_text() const{ return AutoStory_Checkpoint_09().end_text();} +std::string AutoStory_Checkpoint_10::end_text() const{ return "Talked to Nemona at roof of the Lighthouse.";} +void AutoStory_Checkpoint_10::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_10(env, context, options.notif_status_update, stats); } + void checkpoint_09( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.h index 8ba6ad5a23..e7b621bf05 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_05.h @@ -26,6 +26,21 @@ class AutoStory_Segment_05 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_09 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_10 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; // start: Rescued Koraidon/Miraidon and escaped from the Houndoom Cave. Standing next to Koraidon/Miraidon just outside the cave exit. // end: Battled Arven and received Legendary's Pokeball. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.cpp index 51aa871150..0afb868408 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.cpp @@ -50,13 +50,20 @@ void AutoStory_Segment_06::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 06: Go to Los Platos", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_11(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_11().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 06: Go to Los Platos", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} +std::string AutoStory_Checkpoint_11::name() const{ return "011 - " + AutoStory_Segment_06().name(); } +std::string AutoStory_Checkpoint_11::start_text() const{ return "Talked to Nemona at roof of the Lighthouse.";} +std::string AutoStory_Checkpoint_11::end_text() const{ return "Arrived at Los Platos pokecenter. Cleared Let's go tutorial.";} +void AutoStory_Checkpoint_11::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_11(env, context, options.notif_status_update, stats); } diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.h index 4d091cd2eb..5f66894d08 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_06.h @@ -26,6 +26,14 @@ class AutoStory_Segment_06 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_11 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: Talked to Nemona at roof of the Lighthouse. // end: Arrived at Los Platos pokecenter. Cleared Let's go tutorial. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.cpp index 0afbe3746d..c496ee6135 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.cpp @@ -51,15 +51,24 @@ void AutoStory_Segment_07::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 07: Go to Mesagoza South", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_12(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_12().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); - env.console.log("End Segment 07: Go to Mesagoza South", COLOR_GREEN); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} +std::string AutoStory_Checkpoint_12::name() const{ return "012 - " + AutoStory_Segment_07().name(); } +std::string AutoStory_Checkpoint_12::start_text() const{ return "Arrived at Los Platos pokecenter. Cleared Let's go tutorial.";} +std::string AutoStory_Checkpoint_12::end_text() const{ return "Arrived at Mesagoza (South) Pokecenter.";} +void AutoStory_Checkpoint_12::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_12(env, context, options.notif_status_update, stats); } + + void checkpoint_12( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.h index 40c14fbd9c..ec231fa94e 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_07.h @@ -26,6 +26,14 @@ class AutoStory_Segment_07 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_12 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: Arrived at Los Platos pokecenter. Cleared Let's go tutorial. // end: Arrived at Mesagoza (South) Pokecenter diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.cpp index 585d99de3d..b3fab66a06 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.cpp @@ -49,19 +49,44 @@ void AutoStory_Segment_08::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 08: Beat Team Star and arrive at School", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_13().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_14().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_15().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_13::name() const{ return "013 - " + AutoStory_Segment_08().name(); } +std::string AutoStory_Checkpoint_13::start_text() const{ return "Arrived at Mesagoza (South) Pokecenter.";} +std::string AutoStory_Checkpoint_13::end_text() const{ return "Battled Nemona at Mesagoza gate. Entered Mesagoza.";} +void AutoStory_Checkpoint_13::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_13(env, context, options.notif_status_update, stats); +} + + + +std::string AutoStory_Checkpoint_14::name() const{ return "014 - " + AutoStory_Segment_08().name(); } +std::string AutoStory_Checkpoint_14::start_text() const{ return AutoStory_Checkpoint_13().end_text();} +std::string AutoStory_Checkpoint_14::end_text() const{ return "Battled Team Star at school entrance.";} +void AutoStory_Checkpoint_14::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_14(env, context, options.notif_status_update, stats); - checkpoint_15(env, context, options.notif_status_update, stats); - +} + - context.wait_for_all_requests(); - env.console.log("End Segment 08: Beat Team Star and arrive at School", COLOR_GREEN); +std::string AutoStory_Checkpoint_15::name() const{ return "015 - " + AutoStory_Segment_08().name(); } +std::string AutoStory_Checkpoint_15::start_text() const{ return AutoStory_Checkpoint_14().end_text();} +std::string AutoStory_Checkpoint_15::end_text() const{ return "Talked to Jacq in classroom. Standing in classroom.";} +void AutoStory_Checkpoint_15::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_15(env, context, options.notif_status_update, stats); } + void checkpoint_13( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.h index f48c66a0d5..a63d3a602e 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_08.h @@ -26,6 +26,30 @@ class AutoStory_Segment_08 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_13 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_14 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_15 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: Arrived at Mesagoza (South) Pokecenter // end: Battled Nemona at Mesagoza gate. Entered Mesagoza. void checkpoint_13( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.cpp index 18aafad705..71711841de 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.cpp @@ -49,17 +49,53 @@ void AutoStory_Segment_09::run_segment( stats.m_segment++; env.update_stats(); context.wait_for_all_requests(); - env.console.log("Start Segment 09: Complete tutorial", COLOR_ORANGE); + env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_16().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_17().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_18().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_19().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_20().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_16::name() const{ return "016 - " + AutoStory_Segment_09().name(); } +std::string AutoStory_Checkpoint_16::start_text() const{ return "Talked to Jacq in classroom. Standing in classroom.";} +std::string AutoStory_Checkpoint_16::end_text() const{ return "Talked to Arven. Received Titan questline (Path of Legends). Talked to Cassiopeia. Standing in main hall.";} +void AutoStory_Checkpoint_16::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_16(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_17::name() const{ return "017 - " + AutoStory_Segment_09().name(); } +std::string AutoStory_Checkpoint_17::start_text() const{ return AutoStory_Checkpoint_16().end_text();} +std::string AutoStory_Checkpoint_17::end_text() const{ return "Talked to Cassiopeia. Saw Geeta. Talked to Nemona. Received Gym/Elite Four questline (Victory Road). Standing in staff room.";} +void AutoStory_Checkpoint_17::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_17(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_18::name() const{ return "018 - " + AutoStory_Segment_09().name(); } +std::string AutoStory_Checkpoint_18::start_text() const{ return AutoStory_Checkpoint_17().end_text();} +std::string AutoStory_Checkpoint_18::end_text() const{ return "Talked to Clavell and the professor.";} +void AutoStory_Checkpoint_18::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_18(env, context, options.notif_status_update, stats); - checkpoint_19(env, context, options.notif_status_update, stats); - checkpoint_20(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment 09: Complete tutorial", COLOR_GREEN); +std::string AutoStory_Checkpoint_19::name() const{ return "019 - " + AutoStory_Segment_09().name(); } +std::string AutoStory_Checkpoint_19::start_text() const{ return AutoStory_Checkpoint_18().end_text();} +std::string AutoStory_Checkpoint_19::end_text() const{ return "Talked to Nemona, visited dorm, time passed.";} +void AutoStory_Checkpoint_19::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_19(env, context, options.notif_status_update, stats); +} +std::string AutoStory_Checkpoint_20::name() const{ return "020 - " + AutoStory_Segment_09().name(); } +std::string AutoStory_Checkpoint_20::start_text() const{ return AutoStory_Checkpoint_19().end_text();} +std::string AutoStory_Checkpoint_20::end_text() const{ return "Get on ride for first time.";} +void AutoStory_Checkpoint_20::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_20(env, context, options.notif_status_update, stats); } diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.h index 5b9825908b..ae049e42f7 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_09.h @@ -26,6 +26,47 @@ class AutoStory_Segment_09 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_16 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_17 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_18 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_19 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_20 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: Talked to Jacq in classroom. Standing in classroom. // end: Talked to Arven. Received Titan questline (Path of Legends). Talked to Cassiopeia. Standing in main hall. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp index cf529159c2..d06a0f0d7e 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp @@ -62,25 +62,23 @@ void AutoStory_Segment_34::run_segment( } -static constexpr std::string segment_num = "34"; - std::string AutoStory_Checkpoint_90::name() const{ return "90 - " + AutoStory_Segment_34().name(); } -std::string AutoStory_Checkpoint_90::start_text() const{ return segment_num + ": Beat Geeta. At Pokemon League Pokecenter.";} -std::string AutoStory_Checkpoint_90::end_text() const{ return segment_num + ": Beat Nemona. At dormitory room, next to bed.";} +std::string AutoStory_Checkpoint_90::start_text() const{ return "Beat Geeta. At Pokemon League Pokecenter.";} +std::string AutoStory_Checkpoint_90::end_text() const{ return "Beat Nemona. At dormitory room, next to bed.";} void AutoStory_Checkpoint_90::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_90(env, context, options.notif_status_update, stats); } std::string AutoStory_Checkpoint_91::name() const{ return "91 - " + AutoStory_Segment_34().name(); } std::string AutoStory_Checkpoint_91::start_text() const{ return AutoStory_Checkpoint_90().end_text();} -std::string AutoStory_Checkpoint_91::end_text() const{ return segment_num + ": Beat Penny. At Academy fly point.";} +std::string AutoStory_Checkpoint_91::end_text() const{ return "Beat Penny. At Academy fly point.";} void AutoStory_Checkpoint_91::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_91(env, context, options.notif_status_update, stats); } std::string AutoStory_Checkpoint_92::name() const{ return "92 - " + AutoStory_Segment_34().name(); } std::string AutoStory_Checkpoint_92::start_text() const{ return AutoStory_Checkpoint_91().end_text();} -std::string AutoStory_Checkpoint_92::end_text() const{ return segment_num + ": Beat Arven. At Los Platos Pokecenter.";} +std::string AutoStory_Checkpoint_92::end_text() const{ return "Beat Arven. At Los Platos Pokecenter.";} void AutoStory_Checkpoint_92::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_92(env, context, options.notif_status_update, stats); } From 82aed5917c68a93afe57fc8058070e2023a90689 Mon Sep 17 00:00:00 2001 From: jw098 Date: Thu, 23 Oct 2025 23:39:33 -0700 Subject: [PATCH 3/6] add checkpoint selection to UI --- .../AutoStory/PokemonSV_AutoStory.cpp | 121 ++++++++++++++++-- .../Programs/AutoStory/PokemonSV_AutoStory.h | 7 + 2 files changed, 115 insertions(+), 13 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp index a261b25fdb..108e4115e9 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp @@ -72,6 +72,7 @@ namespace PokemonSV{ using namespace Pokemon; static constexpr size_t INDEX_OF_LAST_TUTORIAL_SEGMENT = 9; +static constexpr size_t INDEX_OF_LAST_TUTORIAL_CHECKPOINT = 20; std::vector> make_autoStory_segment_list(){ @@ -172,6 +173,28 @@ const StringSelectDatabase& MAINSTORY_SEGMENTS_SELECT_DATABASE(){ std::vector> make_autoStory_checkpoint_list(){ std::vector> checkpoint_list; + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); @@ -199,11 +222,11 @@ const StringSelectDatabase& ALL_CHECKPOINTS_SELECT_DATABASE(){ StringSelectDatabase make_tutorial_checkpoints_database(){ StringSelectDatabase ret; - const StringSelectDatabase& all_segments = ALL_CHECKPOINTS_SELECT_DATABASE(); + const StringSelectDatabase& all_checkpoints = ALL_CHECKPOINTS_SELECT_DATABASE(); size_t start = 0; - size_t end = all_segments.case_list().size(); // INDEX_OF_LAST_TUTORIAL_SEGMENT + 1; + size_t end = INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1; for (size_t i = start; i < end; i++){ - const auto& segment = all_segments[i]; + const auto& segment = all_checkpoints[i]; ret.add_entry(segment); } return ret; @@ -216,11 +239,11 @@ const StringSelectDatabase& TUTORIAL_CHECKPOINTS_SELECT_DATABASE(){ StringSelectDatabase make_mainstory_checkpoints_database(){ StringSelectDatabase ret; - const StringSelectDatabase& all_segments = ALL_CHECKPOINTS_SELECT_DATABASE(); - size_t start = 0; // INDEX_OF_LAST_TUTORIAL_SEGMENT + 1; - size_t end = all_segments.case_list().size(); + const StringSelectDatabase& all_checkpoints = ALL_CHECKPOINTS_SELECT_DATABASE(); + size_t start = INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1; + size_t end = all_checkpoints.case_list().size(); for (size_t i = start; i < end; i++){ - const auto& segment = all_segments[i]; + const auto& segment = all_checkpoints[i]; ret.add_entry(segment); } return ret; @@ -291,19 +314,19 @@ AutoStory::AutoStory() "End Segment:", //
Program will stop after completing this segment. TUTORIAL_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, - "9" + std::to_string(INDEX_OF_LAST_TUTORIAL_SEGMENT) ) , STARTPOINT_MAINSTORY( "Start Segment:", //
Program will start with this segment. MAINSTORY_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, - "10" + std::to_string(INDEX_OF_LAST_TUTORIAL_SEGMENT+1) ) , ENDPOINT_MAINSTORY( "End Segment:", //
Program will stop after completing this segment. MAINSTORY_SEGMENTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, - "10" + std::to_string(ALL_SEGMENTS_SELECT_DATABASE().case_list().size()-1) ) , START_CHECKPOINT_TUTORIAL( "Start Checkpoint:", //
Program will start with this checkpoint. @@ -315,19 +338,19 @@ AutoStory::AutoStory() "End Checkpoint:", //
Program will stop after completing this checkpoint. TUTORIAL_CHECKPOINTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, - "2" //TODO: update this + std::to_string(INDEX_OF_LAST_TUTORIAL_CHECKPOINT) ) , START_CHECKPOINT_MAINSTORY( "Start Checkpoint:", //
Program will start with this checkpoint. MAINSTORY_CHECKPOINTS_SELECT_DATABASE(), LockMode::LOCK_WHILE_RUNNING, - "0" //TODO: update this + std::to_string(INDEX_OF_LAST_TUTORIAL_CHECKPOINT+1) ) , END_CHECKPOINT_MAINSTORY( "End Checkpoint:", //
Program will stop after completing this checkpoint. MAINSTORY_CHECKPOINTS_SELECT_DATABASE(), LockMode::UNLOCK_WHILE_RUNNING, - "2" //TODO: update this + std::to_string(ALL_CHECKPOINTS_SELECT_DATABASE().case_list().size()-1) ) , SETUP_NOTE{ "NOTE: Make sure you have selected the correct Start Point. " @@ -346,6 +369,12 @@ AutoStory::AutoStory() ) , END_DESCRIPTION( "" + ) + , START_CHECKPOINT_DESCRIPTION( + "" + ) + , END_CHECKPOINT_DESCRIPTION( + "" ) , STARTERCHOICE( "Starter " + STRING_POKEMON + ":", @@ -602,7 +631,11 @@ AutoStory::AutoStory() PA_ADD_OPTION(STARTERCHOICE); PA_ADD_OPTION(START_CHECKPOINT_TUTORIAL); + PA_ADD_OPTION(START_CHECKPOINT_MAINSTORY); + PA_ADD_OPTION(START_CHECKPOINT_DESCRIPTION); PA_ADD_OPTION(END_CHECKPOINT_TUTORIAL); + PA_ADD_OPTION(END_CHECKPOINT_MAINSTORY); + PA_ADD_OPTION(END_CHECKPOINT_DESCRIPTION); PA_ADD_OPTION(GO_HOME_WHEN_DONE); PA_ADD_OPTION(NOTIFICATIONS); @@ -615,6 +648,12 @@ AutoStory::AutoStory() ENDPOINT_TUTORIAL.add_listener(*this); STARTPOINT_MAINSTORY.add_listener(*this); ENDPOINT_MAINSTORY.add_listener(*this); + + START_CHECKPOINT_TUTORIAL.add_listener(*this); + END_CHECKPOINT_TUTORIAL.add_listener(*this); + START_CHECKPOINT_MAINSTORY.add_listener(*this); + END_CHECKPOINT_MAINSTORY.add_listener(*this); + ENABLE_TEST_CHECKPOINTS.add_listener(*this); ENABLE_TEST_REALIGN.add_listener(*this); ENABLE_MISC_TEST.add_listener(*this); @@ -636,17 +675,29 @@ void AutoStory::on_config_value_changed(void* object){ STARTPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); ENDPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); + + START_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); + END_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); + START_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); + END_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); }else if (STORY_SECTION == StorySection::MAIN_STORY){ STARTPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); ENDPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); STARTPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); ENDPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); + + START_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); + END_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); + START_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); + END_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); } MAINSTORY_NOTE.set_visibility(STORY_SECTION == StorySection::TUTORIAL ? ConfigOptionState::HIDDEN : ConfigOptionState::ENABLED); START_DESCRIPTION.set_text(start_segment_description()); END_DESCRIPTION.set_text(end_segment_description()); + START_CHECKPOINT_DESCRIPTION.set_text(start_checkpoint_description()); + END_CHECKPOINT_DESCRIPTION.set_text(end_checkpoint_description()); if (ENABLE_TEST_CHECKPOINTS){ START_CHECKPOINT.set_visibility(ConfigOptionState::ENABLED); @@ -924,6 +975,50 @@ size_t AutoStory::get_end_segment_index(){ return end; } +std::string AutoStory::start_checkpoint_description(){ + size_t checkpoint_index = 0; + if (STORY_SECTION == StorySection::TUTORIAL){ + checkpoint_index = START_CHECKPOINT_TUTORIAL.index(); + }else if (STORY_SECTION == StorySection::MAIN_STORY){ + checkpoint_index = START_CHECKPOINT_MAINSTORY.index() + (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1); + } + return " Start: " + ALL_AUTO_STORY_CHECKPOINT_LIST()[checkpoint_index]->start_text(); +} + +std::string AutoStory::end_checkpoint_description(){ + size_t checkpoint_index = 0; + if (STORY_SECTION == StorySection::TUTORIAL){ + checkpoint_index = END_CHECKPOINT_TUTORIAL.index(); + }else if (STORY_SECTION == StorySection::MAIN_STORY){ + checkpoint_index = END_CHECKPOINT_MAINSTORY.index() + (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1); + } + return " End: " + ALL_AUTO_STORY_CHECKPOINT_LIST()[checkpoint_index]->end_text(); +} + +// size_t AutoStory::get_start_checkpoint_index(){ +// size_t start = 0; + +// if (STORY_SECTION == StorySection::TUTORIAL){ +// start = START_CHECKPOINT_TUTORIAL.index(); +// }else if (STORY_SECTION == StorySection::MAIN_STORY){ +// start = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + START_CHECKPOINT_MAINSTORY.index(); +// } + +// return start; +// } + +// size_t AutoStory::get_end_checkpoint_index(){ +// size_t end = 0; + +// if (STORY_SECTION == StorySection::TUTORIAL){ +// end = END_CHECKPOINT_TUTORIAL.index(); +// }else if (STORY_SECTION == StorySection::MAIN_STORY){ +// end = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + END_CHECKPOINT_MAINSTORY.index(); +// } + +// return end; +// } + void AutoStory::run_autostory(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ AutoStoryOptions options{ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h index 911ae7a3d6..d563496626 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h @@ -52,6 +52,8 @@ class AutoStory : public SingleSwitchProgramInstance, public ConfigOption::Liste size_t get_start_segment_index(); size_t get_end_segment_index(); + size_t get_start_checkpoint_index(); + size_t get_end_checkpoint_index(); void run_autostory(SingleSwitchProgramEnvironment& env, ProControllerContext& context); @@ -60,6 +62,8 @@ class AutoStory : public SingleSwitchProgramInstance, public ConfigOption::Liste std::string start_segment_description(); std::string end_segment_description(); + std::string start_checkpoint_description(); + std::string end_checkpoint_description(); private: OCR::LanguageOCROption LANGUAGE; @@ -89,6 +93,9 @@ class AutoStory : public SingleSwitchProgramInstance, public ConfigOption::Liste StaticTextOption START_DESCRIPTION; StaticTextOption END_DESCRIPTION; + StaticTextOption START_CHECKPOINT_DESCRIPTION; + StaticTextOption END_CHECKPOINT_DESCRIPTION; + EnumDropdownOption STARTERCHOICE; From 9f1337fa91e8b8f31da8813779168d895fc5a8c2 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sat, 25 Oct 2025 14:39:48 -0700 Subject: [PATCH 4/6] add rest of checkpoints --- .../AutoStory/PokemonSV_AutoStory.cpp | 79 +++++++++++++++++++ .../PokemonSV_AutoStory_Segment_10.cpp | 29 ++++++- .../PokemonSV_AutoStory_Segment_10.h | 26 ++++++ .../PokemonSV_AutoStory_Segment_11.cpp | 37 ++++++++- .../PokemonSV_AutoStory_Segment_11.h | 33 ++++++++ .../PokemonSV_AutoStory_Segment_12.cpp | 9 ++- .../PokemonSV_AutoStory_Segment_12.h | 10 +++ .../PokemonSV_AutoStory_Segment_13.cpp | 9 ++- .../PokemonSV_AutoStory_Segment_13.h | 9 +++ .../PokemonSV_AutoStory_Segment_14.cpp | 16 +++- .../PokemonSV_AutoStory_Segment_14.h | 17 ++++ .../PokemonSV_AutoStory_Segment_15.cpp | 27 ++++++- .../PokemonSV_AutoStory_Segment_15.h | 24 ++++++ .../PokemonSV_AutoStory_Segment_16.cpp | 17 +++- .../PokemonSV_AutoStory_Segment_16.h | 17 ++++ .../PokemonSV_AutoStory_Segment_17.cpp | 17 +++- .../PokemonSV_AutoStory_Segment_17.h | 17 ++++ .../PokemonSV_AutoStory_Segment_18.cpp | 20 ++++- .../PokemonSV_AutoStory_Segment_18.h | 17 ++++ .../PokemonSV_AutoStory_Segment_19.cpp | 20 ++++- .../PokemonSV_AutoStory_Segment_19.h | 17 ++++ .../PokemonSV_AutoStory_Segment_20.cpp | 36 ++++++++- .../PokemonSV_AutoStory_Segment_20.h | 33 ++++++++ .../PokemonSV_AutoStory_Segment_21.cpp | 28 ++++++- .../PokemonSV_AutoStory_Segment_21.h | 26 ++++++ .../PokemonSV_AutoStory_Segment_22.cpp | 38 ++++++++- .../PokemonSV_AutoStory_Segment_22.h | 34 ++++++++ .../PokemonSV_AutoStory_Segment_23.cpp | 9 ++- .../PokemonSV_AutoStory_Segment_23.h | 9 +++ .../PokemonSV_AutoStory_Segment_24.cpp | 31 +++++++- .../PokemonSV_AutoStory_Segment_24.h | 25 ++++++ .../PokemonSV_AutoStory_Segment_25.cpp | 29 ++++++- .../PokemonSV_AutoStory_Segment_25.h | 26 ++++++ .../PokemonSV_AutoStory_Segment_26.cpp | 31 +++++++- .../PokemonSV_AutoStory_Segment_26.h | 24 ++++++ .../PokemonSV_AutoStory_Segment_27.cpp | 40 +++++++++- .../PokemonSV_AutoStory_Segment_27.h | 34 ++++++++ .../PokemonSV_AutoStory_Segment_28.cpp | 30 ++++++- .../PokemonSV_AutoStory_Segment_28.h | 26 ++++++ .../PokemonSV_AutoStory_Segment_29.cpp | 39 ++++++++- .../PokemonSV_AutoStory_Segment_29.h | 38 ++++++++- .../PokemonSV_AutoStory_Segment_30.cpp | 30 ++++++- .../PokemonSV_AutoStory_Segment_30.h | 25 ++++++ .../PokemonSV_AutoStory_Segment_31.cpp | 37 ++++++++- .../PokemonSV_AutoStory_Segment_31.h | 34 ++++++++ .../PokemonSV_AutoStory_Segment_32.cpp | 32 +++++++- .../PokemonSV_AutoStory_Segment_32.h | 25 ++++++ .../PokemonSV_AutoStory_Segment_33.cpp | 48 ++++++++++- .../PokemonSV_AutoStory_Segment_33.h | 41 ++++++++++ .../PokemonSV_AutoStory_Segment_34.cpp | 6 +- 50 files changed, 1266 insertions(+), 65 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp index 108e4115e9..8129d8cdc2 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp @@ -183,6 +183,7 @@ std::vector> make_autoStory_checkpoint_lis checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); @@ -193,11 +194,89 @@ std::vector> make_autoStory_checkpoint_lis checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); + checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); + + return checkpoint_list; }; diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.cpp index df5e94e5e7..dc74125b38 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.cpp @@ -54,15 +54,38 @@ void AutoStory_Segment_10::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_21(env, context, options.notif_status_update, stats); - checkpoint_22(env, context, options.notif_status_update, stats); - checkpoint_23(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_21().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_22().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_23().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_21::name() const{ return "021 - " + AutoStory_Segment_10().name(); } +std::string AutoStory_Checkpoint_21::start_text() const{ return "After the break, with level 100 Gardevoir. At Mesagoza West pokecenter.";} +std::string AutoStory_Checkpoint_21::end_text() const{ return "At Mesagoza West gate flypoint.";} +void AutoStory_Checkpoint_21::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_21(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_22::name() const{ return "022 - " + AutoStory_Segment_10().name(); } +std::string AutoStory_Checkpoint_22::start_text() const{ return AutoStory_Checkpoint_21().end_text();} +std::string AutoStory_Checkpoint_22::end_text() const{ return "At South Province Area Two Pokecenter.";} +void AutoStory_Checkpoint_22::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_22(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_23::name() const{ return "023 - " + AutoStory_Segment_10().name(); } +std::string AutoStory_Checkpoint_23::start_text() const{ return AutoStory_Checkpoint_22().end_text();} +std::string AutoStory_Checkpoint_23::end_text() const{ return "At Cortondo East Pokecenter";} +void AutoStory_Checkpoint_23::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_23(env, context, options.notif_status_update, stats); +} + + + void checkpoint_21( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.h index c47699f28e..a444085087 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_10.h @@ -26,6 +26,32 @@ class AutoStory_Segment_10 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_21 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_22 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_23 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: After the break, with level 100 Gardevoir. At Mesagoza West pokecenter. // end: At Mesagoza West gate flypoint diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.cpp index 6a401689f9..7962f1c426 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.cpp @@ -61,15 +61,46 @@ void AutoStory_Segment_11::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_24().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_25().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_26().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_27().run_checkpoint(env, context, options, stats); + + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_24::name() const{ return "024 - " + AutoStory_Segment_11().name(); } +std::string AutoStory_Checkpoint_24::start_text() const{ return "At Cortondo East Pokecenter";} +std::string AutoStory_Checkpoint_24::end_text() const{ return "Spoke to Cortondo Gym reception. At Cortondo West Pokecenter.";} +void AutoStory_Checkpoint_24::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_24(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_25::name() const{ return "025 - " + AutoStory_Segment_11().name(); } +std::string AutoStory_Checkpoint_25::start_text() const{ return AutoStory_Checkpoint_24().end_text();} +std::string AutoStory_Checkpoint_25::end_text() const{ return "Defeated the trainers at Olive Roll, but left Olive unmoved. Then backed out, standing in front of the Olive Roll NPC.";} +void AutoStory_Checkpoint_25::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_25(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_26::name() const{ return "026 - " + AutoStory_Segment_11().name(); } +std::string AutoStory_Checkpoint_26::start_text() const{ return AutoStory_Checkpoint_25().end_text();} +std::string AutoStory_Checkpoint_26::end_text() const{ return "Completed Olive roll gym challenge.";} +void AutoStory_Checkpoint_26::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_26(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_27::name() const{ return "027 - " + AutoStory_Segment_11().name(); } +std::string AutoStory_Checkpoint_27::start_text() const{ return AutoStory_Checkpoint_26().end_text();} +std::string AutoStory_Checkpoint_27::end_text() const{ return "At Cortondo East Pokecenter.";} +void AutoStory_Checkpoint_27::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_27(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); -} void checkpoint_24( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.h index a5bfcbfe48..55bd66b7b8 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_11.h @@ -26,6 +26,39 @@ class AutoStory_Segment_11 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_24 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_25 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_26 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_27 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At Cortondo East Pokecenter // end: Spoke to Cortondo Gym reception. At Cortondo West Pokecenter. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.cpp index 6ed841c7af..46f0103a83 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.cpp @@ -57,13 +57,20 @@ void AutoStory_Segment_12::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_28(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_28().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_28::name() const{ return "028 - " + AutoStory_Segment_12().name(); } +std::string AutoStory_Checkpoint_28::start_text() const{ return "At Cortondo East Pokecenter.";} +std::string AutoStory_Checkpoint_28::end_text() const{ return "Beat Cortondo Gym. At Cortondo West Pokecenter.";} +void AutoStory_Checkpoint_28::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_28(env, context, options.notif_status_update, stats); +} + void checkpoint_28( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.h index 234c693674..6b5fe46e37 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_12.h @@ -26,6 +26,16 @@ class AutoStory_Segment_12 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_28 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At Cortondo East Pokecenter. // end: Beat Cortondo Gym. At Cortondo West Pokecenter. void checkpoint_28( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.cpp index 5a3cc63880..390308af9c 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.cpp @@ -52,13 +52,20 @@ void AutoStory_Segment_13::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_29(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_29().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_29::name() const{ return "029 - " + AutoStory_Segment_13().name(); } +std::string AutoStory_Checkpoint_29::start_text() const{ return "At Cortondo West Pokecenter.";} +std::string AutoStory_Checkpoint_29::end_text() const{ return "At West Province Area One Central Pokecenter.";} +void AutoStory_Checkpoint_29::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_29(env, context, options.notif_status_update, stats); +} + void checkpoint_29( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.h index 4a88253794..1d806d93ed 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_13.h @@ -26,6 +26,15 @@ class AutoStory_Segment_13 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_29 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At Cortondo West Pokecenter. // end: At West Province Area One Central Pokecenter diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.cpp index 579d2dcd2f..3ef52b417c 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.cpp @@ -53,15 +53,27 @@ void AutoStory_Segment_14::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_30(env, context, options.notif_status_update, stats); - checkpoint_31(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_30().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_31().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_30::name() const{ return "030 - " + AutoStory_Segment_14().name(); } +std::string AutoStory_Checkpoint_30::start_text() const{ return "At West Province Area One Central Pokecenter.";} +std::string AutoStory_Checkpoint_30::end_text() const{ return "Defeated Bombirdier.";} +void AutoStory_Checkpoint_30::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_30(env, context, options.notif_status_update, stats); +} +std::string AutoStory_Checkpoint_31::name() const{ return "031 - " + AutoStory_Segment_14().name(); } +std::string AutoStory_Checkpoint_31::start_text() const{ return AutoStory_Checkpoint_30().end_text();} +std::string AutoStory_Checkpoint_31::end_text() const{ return "At West Province Area One North Pokecenter.";} +void AutoStory_Checkpoint_31::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_31(env, context, options.notif_status_update, stats); +} void checkpoint_30( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.h index ffddf03134..0494f81eee 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_14.h @@ -26,6 +26,23 @@ class AutoStory_Segment_14 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_30 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_31 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At West Province Area One Central Pokecenter // end: Defeated Bombirdier diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.cpp index 0eb7cb6de7..98f48a6d2d 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.cpp @@ -56,16 +56,35 @@ void AutoStory_Segment_15::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_32(env, context, options.notif_status_update, stats); - checkpoint_33(env, context, options.notif_status_update, stats); - checkpoint_34(env, context, options.notif_status_update, stats); - + AutoStory_Checkpoint_32().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_33().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_34().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_32::name() const{ return "032 - " + AutoStory_Segment_15().name(); } +std::string AutoStory_Checkpoint_32::start_text() const{ return "At West Province Area One North Pokecenter";} +std::string AutoStory_Checkpoint_32::end_text() const{ return "Defeated Team Star (Dark) grunts at base entrance";} +void AutoStory_Checkpoint_32::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_32(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_33::name() const{ return "033 - " + AutoStory_Segment_15().name(); } +std::string AutoStory_Checkpoint_33::start_text() const{ return AutoStory_Checkpoint_32().end_text();} +std::string AutoStory_Checkpoint_33::end_text() const{ return "Defeated Team Star (Dark) boss";} +void AutoStory_Checkpoint_33::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_33(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_34::name() const{ return "034 - " + AutoStory_Segment_15().name(); } +std::string AutoStory_Checkpoint_34::start_text() const{ return AutoStory_Checkpoint_33().end_text();} +std::string AutoStory_Checkpoint_34::end_text() const{ return "At Cascarrafa (West) Pokecenter.";} +void AutoStory_Checkpoint_34::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_34(env, context, options.notif_status_update, stats); +} void checkpoint_32( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.h index 5c8cb7169d..b2f63fb515 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_15.h @@ -26,6 +26,30 @@ class AutoStory_Segment_15 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_32 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_33 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_34 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + // start: At West Province Area One North Pokecenter diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.cpp index f58736978b..118c983632 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.cpp @@ -53,14 +53,27 @@ void AutoStory_Segment_16::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_35(env, context, options.notif_status_update, stats); - checkpoint_36(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_35().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_36().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_35::name() const{ return "035 - " + AutoStory_Segment_16().name(); } +std::string AutoStory_Checkpoint_35::start_text() const{ return "At Cascarrafa (West) Pokecenter.";} +std::string AutoStory_Checkpoint_35::end_text() const{ return "At Cascarrafa Gym. Received Kofu's wallet.";} +void AutoStory_Checkpoint_35::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_35(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_36::name() const{ return "036 - " + AutoStory_Segment_16().name(); } +std::string AutoStory_Checkpoint_36::start_text() const{ return AutoStory_Checkpoint_35().end_text();} +std::string AutoStory_Checkpoint_36::end_text() const{ return "At Porto Marinada Pokecenter.";} +void AutoStory_Checkpoint_36::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_36(env, context, options.notif_status_update, stats); +} void checkpoint_35( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.h index 5226cd1167..bf5f050487 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_16.h @@ -26,6 +26,23 @@ class AutoStory_Segment_16 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_35 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_36 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At Cascarrafa (West) Pokecenter. // end: At Cascarrafa Gym. Received Kofu's wallet. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.cpp index 1debf7da6e..22d7ab07e7 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.cpp @@ -53,14 +53,27 @@ void AutoStory_Segment_17::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_37(env, context, options.notif_status_update, stats); - checkpoint_38(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_37().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_38().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_37::name() const{ return "037 - " + AutoStory_Segment_17().name(); } +std::string AutoStory_Checkpoint_37::start_text() const{ return "At Porto Marinada Pokecenter.";} +std::string AutoStory_Checkpoint_37::end_text() const{ return "Won auction at Porto Marinada, passed Gym challenge.";} +void AutoStory_Checkpoint_37::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_37(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_38::name() const{ return "038 - " + AutoStory_Segment_17().name(); } +std::string AutoStory_Checkpoint_38::start_text() const{ return AutoStory_Checkpoint_37().end_text();} +std::string AutoStory_Checkpoint_38::end_text() const{ return "Defeat Cascarrafa Gym. At Porto Marinada Pokecenter.";} +void AutoStory_Checkpoint_38::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_38(env, context, options.notif_status_update, stats); +} void checkpoint_37( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.h index a05a2f9c59..aad2496e71 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_17.h @@ -26,6 +26,23 @@ class AutoStory_Segment_17 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_37 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_38 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At Porto Marinada Pokecenter. // end: Won auction at Porto Marinada, passed Gym challenge. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.cpp index 2d0409d993..c5605a1171 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.cpp @@ -54,14 +54,30 @@ void AutoStory_Segment_18::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_39(env, context, options.notif_status_update, stats); - checkpoint_40(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_39().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_40().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_39::name() const{ return "039 - " + AutoStory_Segment_18().name(); } +std::string AutoStory_Checkpoint_39::start_text() const{ return "Defeated Cascarrafa Gym (Water). At Porto Marinada Pokecenter.";} +std::string AutoStory_Checkpoint_39::end_text() const{ return "Defeated Great Tusk/Iron Treads.";} +void AutoStory_Checkpoint_39::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_39(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_40::name() const{ return "040 - " + AutoStory_Segment_18().name(); } +std::string AutoStory_Checkpoint_40::start_text() const{ return AutoStory_Checkpoint_39().end_text();} +std::string AutoStory_Checkpoint_40::end_text() const{ return "At South Province (Area Three) Pokecenter.";} +void AutoStory_Checkpoint_40::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_40(env, context, options.notif_status_update, stats); +} + + + void checkpoint_39( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.h index c509f32a71..0fa3e1042b 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_18.h @@ -26,6 +26,23 @@ class AutoStory_Segment_18 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_39 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_40 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: Defeated Cascarrafa Gym (Water). At Porto Marinada Pokecenter. // end: Defeated Great Tusk/Iron Treads. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.cpp index 789dc614d1..a92166c23d 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.cpp @@ -53,14 +53,30 @@ void AutoStory_Segment_19::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_41(env, context, options.notif_status_update, stats); - checkpoint_42(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_41().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_42().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_41::name() const{ return "041 - " + AutoStory_Segment_19().name(); } +std::string AutoStory_Checkpoint_41::start_text() const{ return "At South Province (Area Three) Pokecenter.";} +std::string AutoStory_Checkpoint_41::end_text() const{ return "Defeated Klawf.";} +void AutoStory_Checkpoint_41::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_41(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_42::name() const{ return "042 - " + AutoStory_Segment_19().name(); } +std::string AutoStory_Checkpoint_42::start_text() const{ return AutoStory_Checkpoint_41().end_text();} +std::string AutoStory_Checkpoint_42::end_text() const{ return "Defeated Klawf. At Artazon (West) Pokecenter.";} +void AutoStory_Checkpoint_42::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_42(env, context, options.notif_status_update, stats); +} + + + void checkpoint_41( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.h index fa87aa2ca7..7399f3750f 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_19.h @@ -26,6 +26,23 @@ class AutoStory_Segment_19 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_41 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_42 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At South Province (Area Three) Pokecenter. // end: Defeated Klawf. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.cpp index 78633f0a0f..409b55ae92 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.cpp @@ -55,15 +55,45 @@ void AutoStory_Segment_20::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_43().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_44().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_45().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_46().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_43::name() const{ return "043 - " + AutoStory_Segment_20().name(); } +std::string AutoStory_Checkpoint_43::start_text() const{ return "Defeated Klawf. At Artazon (West) Pokecenter.";} +std::string AutoStory_Checkpoint_43::end_text() const{ return "At Artazon Gym building. Battled Nemona. Received Sunflora gym challenge.";} +void AutoStory_Checkpoint_43::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_43(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_44::name() const{ return "044 - " + AutoStory_Segment_20().name(); } +std::string AutoStory_Checkpoint_44::start_text() const{ return AutoStory_Checkpoint_43().end_text();} +std::string AutoStory_Checkpoint_44::end_text() const{ return "Finished Sunflora gym challenge.";} +void AutoStory_Checkpoint_44::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_44(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_45::name() const{ return "045 - " + AutoStory_Segment_20().name(); } +std::string AutoStory_Checkpoint_45::start_text() const{ return AutoStory_Checkpoint_44().end_text();} +std::string AutoStory_Checkpoint_45::end_text() const{ return "Defeated Artazon Gym (Grass). Inside gym building.";} +void AutoStory_Checkpoint_45::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_45(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_46::name() const{ return "046 - " + AutoStory_Segment_20().name(); } +std::string AutoStory_Checkpoint_46::start_text() const{ return AutoStory_Checkpoint_45().end_text();} +std::string AutoStory_Checkpoint_46::end_text() const{ return "At East Province (Area One) Pokecenter.";} +void AutoStory_Checkpoint_46::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_46(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); -} void checkpoint_43( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.h index 8cd8d1358b..8fd6b6cdc6 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_20.h @@ -25,6 +25,39 @@ class AutoStory_Segment_20 : public AutoStory_Segment{ AutoStoryStats& stats) const override; }; +class AutoStory_Checkpoint_43 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_44 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_45 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_46 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: Defeated Klawf. At Artazon (West) Pokecenter. // end: At Artazon Gym building. Battled Nemona. Received Sunflora gym challenge. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.cpp index fdb08a3b59..7c7b01034d 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.cpp @@ -52,15 +52,37 @@ void AutoStory_Segment_21::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_47(env, context, options.notif_status_update, stats); - checkpoint_48(env, context, options.notif_status_update, stats); - checkpoint_49(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_47().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_48().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_49().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_47::name() const{ return "047 - " + AutoStory_Segment_21().name(); } +std::string AutoStory_Checkpoint_47::start_text() const{ return "At East Province (Area One) Pokecenter.";} +std::string AutoStory_Checkpoint_47::end_text() const{ return "At gate of Team Star (Fire) base.";} +void AutoStory_Checkpoint_47::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_47(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_48::name() const{ return "048 - " + AutoStory_Segment_21().name(); } +std::string AutoStory_Checkpoint_48::start_text() const{ return AutoStory_Checkpoint_47().end_text();} +std::string AutoStory_Checkpoint_48::end_text() const{ return "Beat Team Star (Fire)";} +void AutoStory_Checkpoint_48::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_48(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_49::name() const{ return "049 - " + AutoStory_Segment_21().name(); } +std::string AutoStory_Checkpoint_49::start_text() const{ return AutoStory_Checkpoint_48().end_text();} +std::string AutoStory_Checkpoint_49::end_text() const{ return "At East Province (Area Two) Pokecenter.";} +void AutoStory_Checkpoint_49::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_49(env, context, options.notif_status_update, stats); +} + + void checkpoint_47( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.h index f0a2040ba2..7bc9b10305 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_21.h @@ -26,6 +26,32 @@ class AutoStory_Segment_21 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_47 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_48 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_49 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At East Province (Area One) Pokecenter. // end: At gate of Team Star (Fire) base. void checkpoint_47( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.cpp index bf8df4d11b..a25f2d117f 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.cpp @@ -55,16 +55,48 @@ void AutoStory_Segment_22::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_50().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_51().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_52().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_53().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_50::name() const{ return "050 - " + AutoStory_Segment_22().name(); } +std::string AutoStory_Checkpoint_50::start_text() const{ return "Defeated Team Star (Fire). At East Province (Area Two) Pokecenter.";} +std::string AutoStory_Checkpoint_50::end_text() const{ return "At Levincia (South) Pokecenter.";} +void AutoStory_Checkpoint_50::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_50(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_51::name() const{ return "051 - " + AutoStory_Segment_22().name(); } +std::string AutoStory_Checkpoint_51::start_text() const{ return AutoStory_Checkpoint_50().end_text();} +std::string AutoStory_Checkpoint_51::end_text() const{ return "At Levincia gym building. Talked to Hassel, met Rika.";} +void AutoStory_Checkpoint_51::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_51(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_52::name() const{ return "052 - " + AutoStory_Segment_22().name(); } +std::string AutoStory_Checkpoint_52::start_text() const{ return AutoStory_Checkpoint_51().end_text();} +std::string AutoStory_Checkpoint_52::end_text() const{ return "Finished Levincia gym challenge.";} +void AutoStory_Checkpoint_52::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_52(env, context, options.notif_status_update, stats); - checkpoint_53(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); +std::string AutoStory_Checkpoint_53::name() const{ return "053 - " + AutoStory_Segment_22().name(); } +std::string AutoStory_Checkpoint_53::start_text() const{ return AutoStory_Checkpoint_52().end_text();} +std::string AutoStory_Checkpoint_53::end_text() const{ return "Defeated Levincia Gym (Electric). At Levincia (North) Pokecenter.";} +void AutoStory_Checkpoint_53::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_53(env, context, options.notif_status_update, stats); } + + void checkpoint_50( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.h index 08bcfd5320..364acb4a50 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_22.h @@ -26,6 +26,40 @@ class AutoStory_Segment_22 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_50 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_51 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_52 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_53 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: Defeated Team Star (Fire). At East Province (Area Two) Pokecenter. // end: At Levincia (South) Pokecenter. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.cpp index f240bec483..895ebc8489 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.cpp @@ -55,13 +55,20 @@ void AutoStory_Segment_23::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_54(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_54().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } +std::string AutoStory_Checkpoint_54::name() const{ return "054 - " + AutoStory_Segment_23().name(); } +std::string AutoStory_Checkpoint_54::start_text() const{ return "Defeated Levincia Gym (Electric). At Levincia (North) Pokecenter.";} +std::string AutoStory_Checkpoint_54::end_text() const{ return "At East Province (Area Three) Watchtower.";} +void AutoStory_Checkpoint_54::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_54(env, context, options.notif_status_update, stats); +} + void checkpoint_54( SingleSwitchProgramEnvironment& env, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.h index a04075810b..23045cabc2 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_23.h @@ -26,6 +26,15 @@ class AutoStory_Segment_23 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_54 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: Defeated Levincia Gym (Electric). At Levincia (North) Pokecenter. // end: At East Province (Area Three) Watchtower. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.cpp index c205c3e3ef..6df5d875ab 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.cpp @@ -53,9 +53,9 @@ void AutoStory_Segment_24::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_55(env, context, options.notif_status_update, stats); - checkpoint_56(env, context, options.notif_status_update, stats); - checkpoint_57(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_55().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_56().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_57().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); @@ -63,6 +63,31 @@ void AutoStory_Segment_24::run_segment( } +std::string AutoStory_Checkpoint_55::name() const{ return "055 - " + AutoStory_Segment_24().name(); } +std::string AutoStory_Checkpoint_55::start_text() const{ return "At East Province (Area Three) Watchtower.";} +std::string AutoStory_Checkpoint_55::end_text() const{ return "Beat Orthworm phase 1";} +void AutoStory_Checkpoint_55::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_55(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_56::name() const{ return "056 - " + AutoStory_Segment_24().name(); } +std::string AutoStory_Checkpoint_56::start_text() const{ return AutoStory_Checkpoint_55().end_text();} +std::string AutoStory_Checkpoint_56::end_text() const{ return "Beat Orthworm phase 2";} +void AutoStory_Checkpoint_56::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_56(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_57::name() const{ return "057 - " + AutoStory_Segment_24().name(); } +std::string AutoStory_Checkpoint_57::start_text() const{ return AutoStory_Checkpoint_56().end_text();} +std::string AutoStory_Checkpoint_57::end_text() const{ return "At East Province (Area Three) Pokecenter.";} +void AutoStory_Checkpoint_57::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_57(env, context, options.notif_status_update, stats); +} + + + void checkpoint_55( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.h index d8bd3034eb..945c135710 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_24.h @@ -26,6 +26,31 @@ class AutoStory_Segment_24 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_55 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_56 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_57 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At East Province (Area Three) Watchtower. // end: Beat Orthworm phase 1 diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.cpp index cc139aeefa..983a3e97e8 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.cpp @@ -55,15 +55,38 @@ void AutoStory_Segment_25::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_58(env, context, options.notif_status_update, stats); - checkpoint_59(env, context, options.notif_status_update, stats); - checkpoint_60(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_58().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_59().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_60().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } + +std::string AutoStory_Checkpoint_58::name() const{ return "058 - " + AutoStory_Segment_25().name(); } +std::string AutoStory_Checkpoint_58::start_text() const{ return "Beat Orthworm. At East Province (Area Three) Pokecenter.";} +std::string AutoStory_Checkpoint_58::end_text() const{ return "Beat team star grunt. At gate of Team Star (Poison) base.";} +void AutoStory_Checkpoint_58::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_58(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_59::name() const{ return "059 - " + AutoStory_Segment_25().name(); } +std::string AutoStory_Checkpoint_59::start_text() const{ return AutoStory_Checkpoint_58().end_text();} +std::string AutoStory_Checkpoint_59::end_text() const{ return "Beat Team Star (Poison)";} +void AutoStory_Checkpoint_59::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_59(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_60::name() const{ return "060 - " + AutoStory_Segment_25().name(); } +std::string AutoStory_Checkpoint_60::start_text() const{ return AutoStory_Checkpoint_59().end_text();} +std::string AutoStory_Checkpoint_60::end_text() const{ return "At Medali Pokecenter.";} +void AutoStory_Checkpoint_60::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_60(env, context, options.notif_status_update, stats); +} + void checkpoint_58( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.h index 007c2b5ba1..1a72912765 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_25.h @@ -26,6 +26,32 @@ class AutoStory_Segment_25 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_58 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_59 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_60 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: Beat Orthworm. At East Province (Area Three) Pokecenter. // end: Beat team star grunt. At gate of Team Star (Poison) base. void checkpoint_58( diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.cpp index dad3dee29c..7259148e07 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.cpp @@ -54,14 +54,41 @@ void AutoStory_Segment_26::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_61(env, context, options.notif_status_update, stats); - checkpoint_62(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_61().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_62().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_63().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } + +std::string AutoStory_Checkpoint_61::name() const{ return "061 - " + AutoStory_Segment_26().name(); } +std::string AutoStory_Checkpoint_61::start_text() const{ return "At Medali Pokecenter.";} +std::string AutoStory_Checkpoint_61::end_text() const{ return "At Medali Gym";} +void AutoStory_Checkpoint_61::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_61(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_62::name() const{ return "062 - " + AutoStory_Segment_26().name(); } +std::string AutoStory_Checkpoint_62::start_text() const{ return AutoStory_Checkpoint_61().end_text();} +std::string AutoStory_Checkpoint_62::end_text() const{ return "Beat Medali Gym";} +void AutoStory_Checkpoint_62::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_62(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_63::name() const{ return "063 - " + AutoStory_Segment_26().name(); } +std::string AutoStory_Checkpoint_63::start_text() const{ return AutoStory_Checkpoint_62().end_text();} +std::string AutoStory_Checkpoint_63::end_text() const{ return "At Glaseado Mountain Pokecenter";} +void AutoStory_Checkpoint_63::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_63(env, context, options.notif_status_update, stats); +} + + + + void checkpoint_61( SingleSwitchProgramEnvironment& env, ProControllerContext& context, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.h index b5b088cbe2..fa26542a1c 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_26.h @@ -26,6 +26,30 @@ class AutoStory_Segment_26 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_61 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_62 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_63 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.cpp index f0b90e9ebb..2c3b851fb9 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.cpp @@ -54,16 +54,50 @@ void AutoStory_Segment_27::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_64().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_65().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_66().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_67().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + + +std::string AutoStory_Checkpoint_64::name() const{ return "064 - " + AutoStory_Segment_27().name(); } +std::string AutoStory_Checkpoint_64::start_text() const{ return "At Glaseado Mountain Pokecenter";} +std::string AutoStory_Checkpoint_64::end_text() const{ return "At Casseroya Watchtower 3";} +void AutoStory_Checkpoint_64::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_64(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_65::name() const{ return "065 - " + AutoStory_Segment_27().name(); } +std::string AutoStory_Checkpoint_65::start_text() const{ return AutoStory_Checkpoint_64().end_text();} +std::string AutoStory_Checkpoint_65::end_text() const{ return "Defeat Dondozo Titan phase 1.";} +void AutoStory_Checkpoint_65::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_65(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_66::name() const{ return "066 - " + AutoStory_Segment_27().name(); } +std::string AutoStory_Checkpoint_66::start_text() const{ return AutoStory_Checkpoint_65().end_text();} +std::string AutoStory_Checkpoint_66::end_text() const{ return "Defeat Dondozo Titan phase 2-3.";} +void AutoStory_Checkpoint_66::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_66(env, context, options.notif_status_update, stats); - checkpoint_67(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); +std::string AutoStory_Checkpoint_67::name() const{ return "067 - " + AutoStory_Segment_27().name(); } +std::string AutoStory_Checkpoint_67::start_text() const{ return AutoStory_Checkpoint_66().end_text();} +std::string AutoStory_Checkpoint_67::end_text() const{ return "At North Province Area Three Pokecenter";} +void AutoStory_Checkpoint_67::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_67(env, context, options.notif_status_update, stats); } + + void checkpoint_64(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, [&](size_t attempt_number){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.h index 72caa4d866..25d85ae374 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_27.h @@ -26,6 +26,40 @@ class AutoStory_Segment_27 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_64 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_65 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_66 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_67 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At Glaseado Mountain Pokecenter // end: At Casseroya Watchtower 3 void checkpoint_64(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.cpp index 9141fb9f58..e5974eeb02 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.cpp @@ -54,9 +54,9 @@ void AutoStory_Segment_28::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_68(env, context, options.notif_status_update, stats); - checkpoint_69(env, context, options.notif_status_update, stats); - checkpoint_70(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_68().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_69().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_70().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); @@ -64,6 +64,30 @@ void AutoStory_Segment_28::run_segment( } +std::string AutoStory_Checkpoint_68::name() const{ return "068 - " + AutoStory_Segment_28().name(); } +std::string AutoStory_Checkpoint_68::start_text() const{ return "At North Province Area Three Pokecenter";} +std::string AutoStory_Checkpoint_68::end_text() const{ return "Beat team star grunt. At gate of Team Star (Fairy) base.";} +void AutoStory_Checkpoint_68::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_68(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_69::name() const{ return "069 - " + AutoStory_Segment_28().name(); } +std::string AutoStory_Checkpoint_69::start_text() const{ return AutoStory_Checkpoint_68().end_text();} +std::string AutoStory_Checkpoint_69::end_text() const{ return "Beat Team Star (Fairy)";} +void AutoStory_Checkpoint_69::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_69(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_70::name() const{ return "070 - " + AutoStory_Segment_28().name(); } +std::string AutoStory_Checkpoint_70::start_text() const{ return AutoStory_Checkpoint_69().end_text();} +std::string AutoStory_Checkpoint_70::end_text() const{ return "At Montenevera Pokecenter";} +void AutoStory_Checkpoint_70::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_70(env, context, options.notif_status_update, stats); +} + + + void checkpoint_68(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, [&](size_t attempt_number){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.h index c7f4003f2a..be6e0d8a5a 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_28.h @@ -26,6 +26,32 @@ class AutoStory_Segment_28 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_68 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_69 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_70 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At North Province Area Three Pokecenter // end: Beat team star grunt. At gate of Team Star (Fairy) base. void checkpoint_68(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.cpp index c398e1d21c..23cbfed94b 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.cpp @@ -54,17 +54,50 @@ void AutoStory_Segment_29::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_71().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_72().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_73().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_74().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + + +std::string AutoStory_Checkpoint_71::name() const{ return "071 - " + AutoStory_Segment_29().name(); } +std::string AutoStory_Checkpoint_71::start_text() const{ return "At Montenevera Pokecenter";} +std::string AutoStory_Checkpoint_71::end_text() const{ return "Spoke to Montenevera gym receptionist";} +void AutoStory_Checkpoint_71::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_71(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_72::name() const{ return "072 - " + AutoStory_Segment_29().name(); } +std::string AutoStory_Checkpoint_72::start_text() const{ return AutoStory_Checkpoint_71().end_text();} +std::string AutoStory_Checkpoint_72::end_text() const{ return "Passed gym test with MC Sledge.";} +void AutoStory_Checkpoint_72::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_72(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_73::name() const{ return "073 - " + AutoStory_Segment_29().name(); } +std::string AutoStory_Checkpoint_73::start_text() const{ return AutoStory_Checkpoint_72().end_text();} +std::string AutoStory_Checkpoint_73::end_text() const{ return "Beat Montenevera Gym. Inside gym building.";} +void AutoStory_Checkpoint_73::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_73(env, context, options.notif_status_update, stats); - checkpoint_74(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); +std::string AutoStory_Checkpoint_74::name() const{ return "074 - " + AutoStory_Segment_29().name(); } +std::string AutoStory_Checkpoint_74::start_text() const{ return AutoStory_Checkpoint_73().end_text();} +std::string AutoStory_Checkpoint_74::end_text() const{ return "At Glaseado gym Pokecenter.";} +void AutoStory_Checkpoint_74::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_74(env, context, options.notif_status_update, stats); } + void checkpoint_71(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, [&](size_t attempt_number){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.h index 6b69f89fc3..2c32832eb5 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_29.h @@ -26,11 +26,45 @@ class AutoStory_Segment_29 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_71 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_72 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_73 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_74 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At Montenevera Pokecenter -// end: Spoke to gym receptionis +// end: Spoke to Montenevera gym receptionist void checkpoint_71(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); -// start: Spoke to gym receptionis +// start: Spoke to Montenevera gym receptionist // end: Passed gym test with MC Sledge. void checkpoint_72(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.cpp index f6edb71d38..338bc5e92f 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.cpp @@ -55,9 +55,9 @@ void AutoStory_Segment_30::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_75(env, context, options.notif_status_update, stats); - checkpoint_76(env, context, options.notif_status_update, stats); - checkpoint_77(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_75().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_76().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_77().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); @@ -65,6 +65,30 @@ void AutoStory_Segment_30::run_segment( } +std::string AutoStory_Checkpoint_75::name() const{ return "075 - " + AutoStory_Segment_30().name(); } +std::string AutoStory_Checkpoint_75::start_text() const{ return "At Glaseado gym Pokecenter.";} +std::string AutoStory_Checkpoint_75::end_text() const{ return "Battled Nemona. Spoke to Glaseado Gym receptionist";} +void AutoStory_Checkpoint_75::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_75(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_76::name() const{ return "076 - " + AutoStory_Segment_30().name(); } +std::string AutoStory_Checkpoint_76::start_text() const{ return AutoStory_Checkpoint_75().end_text();} +std::string AutoStory_Checkpoint_76::end_text() const{ return "Beat Glaseado Gym Challenge. Beat Glaseado Gym (Ice).";} +void AutoStory_Checkpoint_76::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_76(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_77::name() const{ return "077 - " + AutoStory_Segment_30().name(); } +std::string AutoStory_Checkpoint_77::start_text() const{ return AutoStory_Checkpoint_76().end_text();} +std::string AutoStory_Checkpoint_77::end_text() const{ return "At North Province Area One Pokecenter";} +void AutoStory_Checkpoint_77::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_77(env, context, options.notif_status_update, stats); +} + + void checkpoint_75(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.h index f938cb1555..e82a294ab8 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_30.h @@ -26,6 +26,31 @@ class AutoStory_Segment_30 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_75 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_76 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_77 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At Glaseado Gym Pokecenter diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.cpp index bbafc37b2c..d0be305c4e 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.cpp @@ -55,15 +55,46 @@ void AutoStory_Segment_31::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_78().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_79().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_80().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_81().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + +std::string AutoStory_Checkpoint_78::name() const{ return "078 - " + AutoStory_Segment_31().name(); } +std::string AutoStory_Checkpoint_78::start_text() const{ return "At North Province Area One Pokecenter";} +std::string AutoStory_Checkpoint_78::end_text() const{ return "At Team Star (Fighting) base. Spoke to Clavell.";} +void AutoStory_Checkpoint_78::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_78(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_79::name() const{ return "079 - " + AutoStory_Segment_31().name(); } +std::string AutoStory_Checkpoint_79::start_text() const{ return AutoStory_Checkpoint_78().end_text();} +std::string AutoStory_Checkpoint_79::end_text() const{ return "Beat Team Star (Fighting) grunt. At gate of base.";} +void AutoStory_Checkpoint_79::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_79(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_80::name() const{ return "080 - " + AutoStory_Segment_31().name(); } +std::string AutoStory_Checkpoint_80::start_text() const{ return AutoStory_Checkpoint_79().end_text();} +std::string AutoStory_Checkpoint_80::end_text() const{ return "Beat Team Star (Fighting)";} +void AutoStory_Checkpoint_80::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_80(env, context, options.notif_status_update, stats); +} + +std::string AutoStory_Checkpoint_81::name() const{ return "081 - " + AutoStory_Segment_31().name(); } +std::string AutoStory_Checkpoint_81::start_text() const{ return AutoStory_Checkpoint_80().end_text();} +std::string AutoStory_Checkpoint_81::end_text() const{ return "At North Province Area Two Pokecenter";} +void AutoStory_Checkpoint_81::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_81(env, context, options.notif_status_update, stats); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); -} void checkpoint_78(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.h index fb44cd85a9..95a4a53ceb 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_31.h @@ -26,6 +26,40 @@ class AutoStory_Segment_31 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_78 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_79 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_80 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_81 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + + // start: At North Province Area One Pokecenter. // end: At Team Star (Fighting) base. Spoke to Clavell. void checkpoint_78(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.cpp index ba3a254f94..dd87ac9a7b 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.cpp @@ -55,15 +55,41 @@ void AutoStory_Segment_32::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); - checkpoint_82(env, context, options.notif_status_update, stats); - checkpoint_83(env, context, options.notif_status_update, stats); - checkpoint_84(env, context, options.notif_status_update, stats); + AutoStory_Checkpoint_82().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_83().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_84().run_checkpoint(env, context, options, stats); context.wait_for_all_requests(); env.console.log("End Segment " + name(), COLOR_GREEN); } + +std::string AutoStory_Checkpoint_82::name() const{ return "082 - " + AutoStory_Segment_32().name(); } +std::string AutoStory_Checkpoint_82::start_text() const{ return "At North Province Area Two Pokecenter";} +std::string AutoStory_Checkpoint_82::end_text() const{ return "At Alfornada Pokecenter.";} +void AutoStory_Checkpoint_82::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_82(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_83::name() const{ return "083 - " + AutoStory_Segment_32().name(); } +std::string AutoStory_Checkpoint_83::start_text() const{ return AutoStory_Checkpoint_82().end_text();} +std::string AutoStory_Checkpoint_83::end_text() const{ return "At Alfornada gym building. Spoke to receptionist.";} +void AutoStory_Checkpoint_83::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_83(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_84::name() const{ return "084 - " + AutoStory_Segment_32().name(); } +std::string AutoStory_Checkpoint_84::start_text() const{ return AutoStory_Checkpoint_83().end_text();} +std::string AutoStory_Checkpoint_84::end_text() const{ return "Beat Alfornada gym challenge. Beat Alfornada gym. At Alfronada Pokecenter.";} +void AutoStory_Checkpoint_84::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_84(env, context, options.notif_status_update, stats); +} + + + void checkpoint_82(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, [&](size_t attempt_number){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.h index 9a10cb8d39..486781e277 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_32.h @@ -26,6 +26,31 @@ class AutoStory_Segment_32 : public AutoStory_Segment{ ) const override; }; +class AutoStory_Checkpoint_82 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_83 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_84 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: At North Province Area Two Pokecenter // end: At Alfornada Pokecenter. diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.cpp index 70bd8555d9..b5627a57d5 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.cpp @@ -59,16 +59,60 @@ void AutoStory_Segment_33::run_segment( context.wait_for_all_requests(); env.console.log("Start Segment " + name(), COLOR_ORANGE); + AutoStory_Checkpoint_85().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_86().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_87().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_88().run_checkpoint(env, context, options, stats); + AutoStory_Checkpoint_89().run_checkpoint(env, context, options, stats); + + context.wait_for_all_requests(); + env.console.log("End Segment " + name(), COLOR_GREEN); + +} + + +std::string AutoStory_Checkpoint_85::name() const{ return "085 - " + AutoStory_Segment_33().name(); } +std::string AutoStory_Checkpoint_85::start_text() const{ return "Beat Alfornada gym challenge. Beat Alfornada gym. At Alfronada Pokecenter.";} +std::string AutoStory_Checkpoint_85::end_text() const{ return "Beat Clavell. At Academy fly point.";} +void AutoStory_Checkpoint_85::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_85(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_86::name() const{ return "086 - " + AutoStory_Segment_33().name(); } +std::string AutoStory_Checkpoint_86::start_text() const{ return AutoStory_Checkpoint_85().end_text();} +std::string AutoStory_Checkpoint_86::end_text() const{ return "At Pokemon League entrance.";} +void AutoStory_Checkpoint_86::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_86(env, context, options.notif_status_update, stats); +} + + +std::string AutoStory_Checkpoint_87::name() const{ return "087 - " + AutoStory_Segment_33().name(); } +std::string AutoStory_Checkpoint_87::start_text() const{ return AutoStory_Checkpoint_86().end_text();} +std::string AutoStory_Checkpoint_87::end_text() const{ return "Finished the Entrance quiz. Standing in front of Rika.";} +void AutoStory_Checkpoint_87::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_87(env, context, options.notif_status_update, stats, options.language, options.starter_choice); +} - context.wait_for_all_requests(); - env.console.log("End Segment " + name(), COLOR_GREEN); +std::string AutoStory_Checkpoint_88::name() const{ return "088 - " + AutoStory_Segment_33().name(); } +std::string AutoStory_Checkpoint_88::start_text() const{ return AutoStory_Checkpoint_87().end_text();} +std::string AutoStory_Checkpoint_88::end_text() const{ return "Beat Elite Four.";} +void AutoStory_Checkpoint_88::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_88(env, context, options.notif_status_update, stats); } +std::string AutoStory_Checkpoint_89::name() const{ return "089 - " + AutoStory_Segment_33().name(); } +std::string AutoStory_Checkpoint_89::start_text() const{ return AutoStory_Checkpoint_88().end_text();} +std::string AutoStory_Checkpoint_89::end_text() const{ return "Beat Geeta. At Pokemon League Pokecenter.";} +void AutoStory_Checkpoint_89::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ + checkpoint_89(env, context, options.notif_status_update, stats); +} + + + + void checkpoint_85(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats){ checkpoint_reattempt_loop(env, context, notif_status_update, stats, [&](size_t attempt_number){ diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.h index 8a699641bf..7cf7190ef2 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_33.h @@ -32,6 +32,47 @@ enum class GameTitle{ VIOLET, }; +class AutoStory_Checkpoint_85 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_86 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_87 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_88 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + +class AutoStory_Checkpoint_89 : public AutoStory_Checkpoint{ +public: + virtual std::string name() const override; + virtual std::string start_text() const override; + virtual std::string end_text() const override; + virtual void run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const override; +}; + + // start: Beat Alfornada gym challenge. Beat Alfornada gym. At Alfronada Pokecenter. // end: Beat Clavell. At Academy fly point. void checkpoint_85(SingleSwitchProgramEnvironment& env, ProControllerContext& context, EventNotificationOption& notif_status_update, AutoStoryStats& stats); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp index d06a0f0d7e..02d1435ccb 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory_Segment_34.cpp @@ -62,21 +62,21 @@ void AutoStory_Segment_34::run_segment( } -std::string AutoStory_Checkpoint_90::name() const{ return "90 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_90::name() const{ return "090 - " + AutoStory_Segment_34().name(); } std::string AutoStory_Checkpoint_90::start_text() const{ return "Beat Geeta. At Pokemon League Pokecenter.";} std::string AutoStory_Checkpoint_90::end_text() const{ return "Beat Nemona. At dormitory room, next to bed.";} void AutoStory_Checkpoint_90::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_90(env, context, options.notif_status_update, stats); } -std::string AutoStory_Checkpoint_91::name() const{ return "91 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_91::name() const{ return "091 - " + AutoStory_Segment_34().name(); } std::string AutoStory_Checkpoint_91::start_text() const{ return AutoStory_Checkpoint_90().end_text();} std::string AutoStory_Checkpoint_91::end_text() const{ return "Beat Penny. At Academy fly point.";} void AutoStory_Checkpoint_91::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ checkpoint_91(env, context, options.notif_status_update, stats); } -std::string AutoStory_Checkpoint_92::name() const{ return "92 - " + AutoStory_Segment_34().name(); } +std::string AutoStory_Checkpoint_92::name() const{ return "092 - " + AutoStory_Segment_34().name(); } std::string AutoStory_Checkpoint_92::start_text() const{ return AutoStory_Checkpoint_91().end_text();} std::string AutoStory_Checkpoint_92::end_text() const{ return "Beat Arven. At Los Platos Pokecenter.";} void AutoStory_Checkpoint_92::run_checkpoint(SingleSwitchProgramEnvironment& env, ProControllerContext& context, AutoStoryOptions options, AutoStoryStats& stats) const{ From e2594f00f754dcae1ed839efb6c13fd7204a2ca4 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sat, 25 Oct 2025 15:05:54 -0700 Subject: [PATCH 5/6] more UI adjustments --- .../AutoStory/PokemonSV_AutoStory.cpp | 64 +++++++++++-------- .../Programs/AutoStory/PokemonSV_AutoStory.h | 2 + 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp index 8129d8cdc2..b1909e3a89 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp @@ -276,7 +276,7 @@ std::vector> make_autoStory_checkpoint_lis checkpoint_list.emplace_back(std::make_unique()); checkpoint_list.emplace_back(std::make_unique()); - + return checkpoint_list; }; @@ -465,6 +465,13 @@ AutoStory::AutoStory() LockMode::LOCK_WHILE_RUNNING, StarterChoice::FUECOCO ) + , ENABLE_ADVANCED_MODE( + "Advanced mode:
" + "Select the start/end checkpoints instead of segments. i.e. finer control over start/end points.
" + "Also, this enables the option to toggle 'Change settings at Program Start'.", + LockMode::UNLOCK_WHILE_RUNNING, + false + ) , GO_HOME_WHEN_DONE(true) , NOTIFICATION_STATUS_UPDATE("Status Update", true, false, std::chrono::seconds(30)) , NOTIFICATIONS({ @@ -481,7 +488,8 @@ AutoStory::AutoStory() ) , CHANGE_SETTINGS( "Change settings at Program Start:
" - "This is to ensure the program has the correct settings, particularly with Autosave turned off.", + "This is to ensure the program has the correct settings, particularly with Autosave turned off, and Camera Support off.
" + "WARNING: if you disable this, make sure you manually set the in-game settings as laid out in the wiki.", LockMode::UNLOCK_WHILE_RUNNING, true ) @@ -654,7 +662,6 @@ AutoStory::AutoStory() if (PreloadSettings::instance().DEVELOPER_MODE){ PA_ADD_OPTION(m_advanced_options); - PA_ADD_OPTION(CHANGE_SETTINGS); PA_ADD_OPTION(FLYPOINT_TYPE); PA_ADD_OPTION(TEST_FLYPOINT_LOCATIONS); @@ -700,14 +707,14 @@ AutoStory::AutoStory() PA_ADD_OPTION(LANGUAGE); PA_ADD_OPTION(SETUP_NOTE); PA_ADD_OPTION(STORY_SECTION); + PA_ADD_OPTION(STARTPOINT_TUTORIAL); PA_ADD_OPTION(MAINSTORY_NOTE); PA_ADD_OPTION(STARTPOINT_MAINSTORY); PA_ADD_OPTION(START_DESCRIPTION); PA_ADD_OPTION(ENDPOINT_TUTORIAL); PA_ADD_OPTION(ENDPOINT_MAINSTORY); - PA_ADD_OPTION(END_DESCRIPTION); - PA_ADD_OPTION(STARTERCHOICE); + PA_ADD_OPTION(END_DESCRIPTION); PA_ADD_OPTION(START_CHECKPOINT_TUTORIAL); PA_ADD_OPTION(START_CHECKPOINT_MAINSTORY); @@ -716,7 +723,13 @@ AutoStory::AutoStory() PA_ADD_OPTION(END_CHECKPOINT_MAINSTORY); PA_ADD_OPTION(END_CHECKPOINT_DESCRIPTION); + PA_ADD_OPTION(STARTERCHOICE); + PA_ADD_OPTION(GO_HOME_WHEN_DONE); + + PA_ADD_OPTION(ENABLE_ADVANCED_MODE); + PA_ADD_OPTION(CHANGE_SETTINGS); + PA_ADD_OPTION(NOTIFICATIONS); @@ -733,6 +746,8 @@ AutoStory::AutoStory() START_CHECKPOINT_MAINSTORY.add_listener(*this); END_CHECKPOINT_MAINSTORY.add_listener(*this); + ENABLE_ADVANCED_MODE.add_listener(*this); + ENABLE_TEST_CHECKPOINTS.add_listener(*this); ENABLE_TEST_REALIGN.add_listener(*this); ENABLE_MISC_TEST.add_listener(*this); @@ -748,29 +763,20 @@ void AutoStory::on_config_value_changed(void* object){ // : ConfigOptionState::HIDDEN; // STARTERCHOICE.set_visibility(state); - if (STORY_SECTION == StorySection::TUTORIAL){ - STARTPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); - ENDPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); + bool tutorial_segments = STORY_SECTION == StorySection::TUTORIAL && !ENABLE_ADVANCED_MODE; + bool tutorial_checkpoints = STORY_SECTION == StorySection::TUTORIAL && ENABLE_ADVANCED_MODE; + bool mainstory_segments = STORY_SECTION == StorySection::MAIN_STORY && !ENABLE_ADVANCED_MODE; + bool mainstory_checkpoints = STORY_SECTION == StorySection::MAIN_STORY && ENABLE_ADVANCED_MODE; - STARTPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); - ENDPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); + STARTPOINT_TUTORIAL.set_visibility(tutorial_segments ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + ENDPOINT_TUTORIAL.set_visibility(tutorial_segments ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + STARTPOINT_MAINSTORY.set_visibility(mainstory_segments ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + ENDPOINT_MAINSTORY.set_visibility(mainstory_segments ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); - START_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); - END_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::ENABLED); - START_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); - END_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::HIDDEN); - }else if (STORY_SECTION == StorySection::MAIN_STORY){ - STARTPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); - ENDPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); - - STARTPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); - ENDPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); - - START_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); - END_CHECKPOINT_TUTORIAL.set_visibility(ConfigOptionState::HIDDEN); - START_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); - END_CHECKPOINT_MAINSTORY.set_visibility(ConfigOptionState::ENABLED); - } + START_CHECKPOINT_TUTORIAL.set_visibility(tutorial_checkpoints ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + END_CHECKPOINT_TUTORIAL.set_visibility(tutorial_checkpoints ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + START_CHECKPOINT_MAINSTORY.set_visibility(mainstory_checkpoints ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + END_CHECKPOINT_MAINSTORY.set_visibility(mainstory_checkpoints ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); MAINSTORY_NOTE.set_visibility(STORY_SECTION == StorySection::TUTORIAL ? ConfigOptionState::HIDDEN : ConfigOptionState::ENABLED); START_DESCRIPTION.set_text(start_segment_description()); @@ -778,6 +784,12 @@ void AutoStory::on_config_value_changed(void* object){ START_CHECKPOINT_DESCRIPTION.set_text(start_checkpoint_description()); END_CHECKPOINT_DESCRIPTION.set_text(end_checkpoint_description()); + START_DESCRIPTION.set_visibility(!ENABLE_ADVANCED_MODE ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + END_DESCRIPTION.set_visibility(!ENABLE_ADVANCED_MODE ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + START_CHECKPOINT_DESCRIPTION.set_visibility(ENABLE_ADVANCED_MODE ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + END_CHECKPOINT_DESCRIPTION.set_visibility(ENABLE_ADVANCED_MODE ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + CHANGE_SETTINGS.set_visibility(ENABLE_ADVANCED_MODE ? ConfigOptionState::ENABLED : ConfigOptionState::HIDDEN); + if (ENABLE_TEST_CHECKPOINTS){ START_CHECKPOINT.set_visibility(ConfigOptionState::ENABLED); END_CHECKPOINT.set_visibility(ConfigOptionState::ENABLED); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h index d563496626..ad74fea122 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.h @@ -99,6 +99,8 @@ class AutoStory : public SingleSwitchProgramInstance, public ConfigOption::Liste EnumDropdownOption STARTERCHOICE; + BooleanCheckBoxOption ENABLE_ADVANCED_MODE; + GoHomeWhenDoneOption GO_HOME_WHEN_DONE; EventNotificationOption NOTIFICATION_STATUS_UPDATE; From f86a437b4ba382f3f8206b3d59601387d53c6f38 Mon Sep 17 00:00:00 2001 From: jw098 Date: Sat, 25 Oct 2025 16:39:42 -0700 Subject: [PATCH 6/6] run_autostory with checkpoints instead of segments, when in advanced mode --- .../AutoStory/PokemonSV_AutoStory.cpp | 80 ++++++++++----- .../AutoStory/PokemonSV_AutoStoryTools.cpp | 99 +++++++++++++++++-- .../AutoStory/PokemonSV_AutoStoryTools.h | 5 +- 3 files changed, 149 insertions(+), 35 deletions(-) diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp index b1909e3a89..67be7aeb5d 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStory.cpp @@ -1086,29 +1086,29 @@ std::string AutoStory::end_checkpoint_description(){ return " End: " + ALL_AUTO_STORY_CHECKPOINT_LIST()[checkpoint_index]->end_text(); } -// size_t AutoStory::get_start_checkpoint_index(){ -// size_t start = 0; - -// if (STORY_SECTION == StorySection::TUTORIAL){ -// start = START_CHECKPOINT_TUTORIAL.index(); -// }else if (STORY_SECTION == StorySection::MAIN_STORY){ -// start = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + START_CHECKPOINT_MAINSTORY.index(); -// } +size_t AutoStory::get_start_checkpoint_index(){ + size_t start = 0; + + if (STORY_SECTION == StorySection::TUTORIAL){ + start = START_CHECKPOINT_TUTORIAL.index(); + }else if (STORY_SECTION == StorySection::MAIN_STORY){ + start = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + START_CHECKPOINT_MAINSTORY.index(); + } -// return start; -// } + return start; +} -// size_t AutoStory::get_end_checkpoint_index(){ -// size_t end = 0; +size_t AutoStory::get_end_checkpoint_index(){ + size_t end = 0; -// if (STORY_SECTION == StorySection::TUTORIAL){ -// end = END_CHECKPOINT_TUTORIAL.index(); -// }else if (STORY_SECTION == StorySection::MAIN_STORY){ -// end = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + END_CHECKPOINT_MAINSTORY.index(); -// } + if (STORY_SECTION == StorySection::TUTORIAL){ + end = END_CHECKPOINT_TUTORIAL.index(); + }else if (STORY_SECTION == StorySection::MAIN_STORY){ + end = (INDEX_OF_LAST_TUTORIAL_CHECKPOINT + 1) + END_CHECKPOINT_MAINSTORY.index(); + } -// return end; -// } + return end; +} void AutoStory::run_autostory(SingleSwitchProgramEnvironment& env, ProControllerContext& context){ @@ -1119,12 +1119,19 @@ void AutoStory::run_autostory(SingleSwitchProgramEnvironment& env, ProController }; AutoStoryStats& stats = env.current_stats(); - if (get_start_segment_index() > get_end_segment_index()){ - throw UserSetupError(env.logger(), "The start segment cannot be later than the end segment."); - } - - for (size_t segment_index = get_start_segment_index(); segment_index <= get_end_segment_index(); segment_index++){ - ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->run_segment(env, context, options, stats); + context.wait_for_all_requests(); + + if (ENABLE_ADVANCED_MODE){ + for (size_t checkpoint_index = get_start_checkpoint_index(); checkpoint_index <= get_end_checkpoint_index(); checkpoint_index++){ + env.console.log("Start Checkpoint " + ALL_AUTO_STORY_CHECKPOINT_LIST()[checkpoint_index]->name(), COLOR_ORANGE); + ALL_AUTO_STORY_CHECKPOINT_LIST()[checkpoint_index]->run_checkpoint(env, context, options, stats); + } + + }else{ + for (size_t segment_index = get_start_segment_index(); segment_index <= get_end_segment_index(); segment_index++){ + ALL_AUTO_STORY_SEGMENT_LIST()[segment_index]->run_segment(env, context, options, stats); + } + } } @@ -1213,14 +1220,33 @@ void AutoStory::program(SingleSwitchProgramEnvironment& env, ProControllerContex return; } + if (ENABLE_ADVANCED_MODE){ + if (get_start_checkpoint_index() > get_end_checkpoint_index()){ + throw UserSetupError(env.logger(), "The start checkpoint cannot be later than the end segment."); + } + + }else{ + if (get_start_segment_index() > get_end_segment_index()){ + throw UserSetupError(env.logger(), "The start segment cannot be later than the end segment."); + } + } + // Connect controller pbf_press_button(context, BUTTON_L, 20, 20); - env.console.log("Start Segment " + ALL_AUTO_STORY_SEGMENT_LIST()[get_start_segment_index()]->name(), COLOR_ORANGE); + if (ENABLE_ADVANCED_MODE){ + env.console.log("Start Checkpoint " + ALL_AUTO_STORY_CHECKPOINT_LIST()[get_start_checkpoint_index()]->name(), COLOR_ORANGE); + }else{ + env.console.log("Start Segment " + ALL_AUTO_STORY_SEGMENT_LIST()[get_start_segment_index()]->name(), COLOR_ORANGE); + } // Set settings. to ensure autosave is off. if (CHANGE_SETTINGS){ - change_settings_prior_to_autostory(env, context, get_start_segment_index(), LANGUAGE); + if (ENABLE_ADVANCED_MODE){ + change_settings_prior_to_autostory_checkpoint_mode(env, context, get_start_checkpoint_index(), LANGUAGE); + }else{ + change_settings_prior_to_autostory_segment_mode(env, context, get_start_segment_index(), LANGUAGE); + } } run_autostory(env, context); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.cpp b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.cpp index 1b518c269e..76f42784be 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.cpp +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.cpp @@ -486,13 +486,7 @@ void swap_starter_moves(SingleSwitchProgramEnvironment& env, ProControllerContex } - -void change_settings_prior_to_autostory( - SingleSwitchProgramEnvironment& env, ProControllerContext& context, - size_t current_segment_num, - Language language -){ - +void change_settings_prior_to_autostory_segment_mode(SingleSwitchProgramEnvironment& env, ProControllerContext& context, size_t current_segment_num, Language language){ // get index of `Options` in the Main Menu, which depends on where you are in Autostory int8_t options_index; std::string assumption_text = ""; @@ -555,6 +549,97 @@ void change_settings_prior_to_autostory( env.console.log("change_settings_prior_to_autostory: " + assumption_text + " The index of \"Options\" in the Menu is " + std::to_string(options_index) + "."); bool has_minimap = current_segment_num >= 2; // the minimap only shows up in segment 2 and beyond + change_settings_prior_to_autostory(env, context, options_index, has_minimap, language); +} + +void change_settings_prior_to_autostory_checkpoint_mode(SingleSwitchProgramEnvironment& env, ProControllerContext& context, size_t current_checkpoint_num, Language language){ + // get index of `Options` in the Main Menu, which depends on where you are in Autostory + int8_t options_index; + std::string assumption_text = ""; + switch(current_checkpoint_num){ + case 0: + return; // can't change settings in the intro cutscene + case 1: + case 2: + // after Intro cutscene done, in room + // Menu + // - Options + // - Save + options_index = 0; + assumption_text = "We assume 'Bag' is not yet unlocked."; + break; + case 3: + case 4: + // Menu + // - Bag --> unlocked after picked up bag/hat in room. Segment 01, checkpoint 02 + // - Options + // - Save + options_index = 1; + assumption_text = "We assume 'Boxes' is not yet unlocked."; + break; + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + // Menu + // - Bag + // - Boxes --> unlocked after battling Nemona and receiving Pokedex app. Segment 02, checkpoint 04 + // - Options + // - Save + options_index = 2; + assumption_text = "We assume 'Poke Portal' is not yet unlocked."; + break; + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + // Menu + // - Bag + // - Boxes + // - Poke Portal --> unlocked after arriving at Los Platos and talking to Nemona. Segment 06, checkpoint 11 + // - Options + // - Save + options_index = 3; + assumption_text = "We assume 'Picnic' is not yet unlocked."; + break; + default: + if(current_checkpoint_num <= 20){ + throw InternalProgramError(nullptr, PA_CURRENT_FUNCTION, "change_settings_prior_to_autostory_checkpoint_mode: current_checkpoint_num should be greater than 20."); + } + + // Menu + // - Bag + // - Boxes + // - Picnic --> unlocked after finishing tutorial. Segment 09, checkpoint 20 + // - Poke Portal + // - Options + // - Save + options_index = 4; + assumption_text = "We assume that the tutorial is done, and all menu items are unlocked."; + break; + } + + env.console.log("change_settings_prior_to_autostory: " + assumption_text + " The index of \"Options\" in the Menu is " + std::to_string(options_index) + "."); + + bool has_minimap = current_checkpoint_num >= 3; // the minimap only shows up in checkpoint 3 and beyond + change_settings_prior_to_autostory(env, context, options_index, has_minimap, language); +} + + +void change_settings_prior_to_autostory( + SingleSwitchProgramEnvironment& env, ProControllerContext& context, + int options_index, + bool has_minimap, + Language language +){ enter_menu_from_overworld(env.program_info(), env.console, context, options_index, MenuSide::RIGHT, has_minimap); change_settings(env, context, language); diff --git a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h index e3f31b7253..bf5809a9a9 100644 --- a/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h +++ b/SerialPrograms/Source/PokemonSV/Programs/AutoStory/PokemonSV_AutoStoryTools.h @@ -275,12 +275,15 @@ void get_off_ride(const ProgramInfo& info, VideoStream& stream, ProControllerCon void get_on_or_off_ride(const ProgramInfo& info, VideoStream& stream, ProControllerContext& context, bool get_on); +void change_settings_prior_to_autostory_segment_mode(SingleSwitchProgramEnvironment& env, ProControllerContext& context, size_t current_segment_num, Language language); +void change_settings_prior_to_autostory_checkpoint_mode(SingleSwitchProgramEnvironment& env, ProControllerContext& context, size_t current_checkpoint_num, Language language); // change the settings prior to Autostory // Assumes that `current_segment` represents where we currently are in the story. void change_settings_prior_to_autostory( SingleSwitchProgramEnvironment& env, ProControllerContext& context, - size_t current_segment_num, + int options_index, + bool has_minimap, Language language );