diff --git a/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.cpp b/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.cpp index b3cc85bde4..d021687cd6 100644 --- a/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.cpp +++ b/SerialPrograms/Source/NintendoSwitch/Framework/NintendoSwitch_SingleSwitchProgramSession.cpp @@ -38,7 +38,7 @@ SingleSwitchProgramSession::SingleSwitchProgramSession(const SingleSwitchProgram , m_descriptor(descriptor) , m_system_option(descriptor.allow_commands_while_running()) , m_system(m_system_option, 0, instance_id()) - , m_instance(descriptor.make_instance()) + , m_instance(descriptor.make_instance(m_system)) , m_scope(nullptr) {} diff --git a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h index 65f0cf221d..526d7f8dc6 100644 --- a/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h +++ b/SerialPrograms/Source/NintendoSwitch/NintendoSwitch_SingleSwitchProgram.h @@ -7,6 +7,7 @@ #ifndef PokemonAutomation_NintendoSwitch_SingleSwitchProgram_H #define PokemonAutomation_NintendoSwitch_SingleSwitchProgram_H +#include #include "Common/Cpp/Options/BatchOption.h" #include "CommonFramework/Globals.h" #include "CommonFramework/Notifications/EventNotificationOption.h" @@ -20,6 +21,7 @@ namespace PokemonAutomation{ namespace NintendoSwitch{ +class SwitchSystemSession; class SingleSwitchProgramInstance; @@ -70,7 +72,9 @@ class SingleSwitchProgramDescriptor : public ProgramDescriptor{ bool deprecated() const{ return m_deprecated; } virtual std::unique_ptr make_panel() const override; - virtual std::unique_ptr make_instance() const = 0; + virtual std::unique_ptr make_instance( + SwitchSystemSession& system + ) const = 0; private: const ProgramControllerClass m_color_class; @@ -169,8 +173,14 @@ class SingleSwitchProgramInstance{ template class SingleSwitchProgramWrapper : public Descriptor{ public: - virtual std::unique_ptr make_instance() const override{ - return std::make_unique(); + virtual std::unique_ptr make_instance( + SwitchSystemSession& system + ) const override{ + if constexpr (std::is_constructible_v){ + return std::make_unique(system); + }else{ + return std::make_unique(); + } } };