3#include <ThunderLib/Auto/ThunderAutoProject.hpp>
4#include <ThunderLib/Trajectory/TrajectoryRunnerProperties.hpp>
5#include <frc/smartdashboard/SendableChooser.h>
6#include <frc2/command/CommandPtr.h>
7#include <frc2/command/Command.h>
10#include <unordered_map>
18class ThunderAutoSendableChooser;
19struct ThunderAutoSendableChooserSelection;
23 enum class ThunderAutoSendableChooserSelectionType {
31 ThunderAutoSendableChooserSelectionType type = ThunderAutoSendableChooserSelectionType::NONE;
32 std::string projectName;
89 void publish(std::string_view smartDashboardKey)
noexcept;
100 bool addAllAutoModes =
false,
101 bool addAllTrajectories =
false)
noexcept;
152 bool addCustomCommand(
const std::string& name, frc2::CommandPtr command)
noexcept;
163 bool addCustomCommand(
const std::string& name, std::shared_ptr<frc2::Command> command)
noexcept;
177 driver::ThunderAutoSendableChooser* getHandle()
noexcept;
178 const driver::ThunderAutoSendableChooser* getHandle()
const noexcept;
182 void addChooserSelection(
const driver::ThunderAutoSendableChooserSelection& selection)
noexcept;
183 void publishChooser(
const std::string& key)
noexcept;
188 driver::ThunderAutoSendableChooser* m_handle =
nullptr;
189 frc::SendableChooser<ThunderAutoSendableChooserSelection> m_chooser;
191 std::optional<TrajectoryRunnerProperties> m_runnerProps;
192 std::unordered_map<std::string, std::shared_ptr<ThunderAutoProject>> m_includedProjects;
194 std::unordered_map<std::string, std::shared_ptr<frc2::Command>> m_customCommands;
Definition ThunderAutoSendableChooser.hpp:42
void setTrajectoryRunnerProperties(const TrajectoryRunnerProperties &runnerProps) noexcept
Definition ThunderAutoSendableChooser.cpp:40
void publish(std::string_view smartDashboardKey) noexcept
Definition ThunderAutoSendableChooser.cpp:45
void includeProjectSource(std::shared_ptr< ThunderAutoProject > project, bool addAllAutoModes=false, bool addAllTrajectories=false) noexcept
Definition ThunderAutoSendableChooser.cpp:49
void addAllTrajectoriesFromProject(const std::string &projectName) noexcept
Definition ThunderAutoSendableChooser.cpp:56
bool addCustomCommand(const std::string &name, frc2::CommandPtr command) noexcept
Definition ThunderAutoSendableChooser.cpp:69
ThunderAutoSendableChooser() noexcept
Definition ThunderAutoSendableChooser.cpp:11
bool addAutoModeFromProject(const std::string &projectName, const std::string &autoModeName) noexcept
Definition ThunderAutoSendableChooser.cpp:83
ThunderAutoSendableChooserSelection getSelected() const noexcept
Definition ThunderAutoSendableChooser.cpp:124
frc2::CommandPtr getSelectedCommand() const noexcept
Definition ThunderAutoSendableChooser.cpp:88
void addAllAutoModesFromProject(const std::string &projectName) noexcept
Definition ThunderAutoSendableChooser.cpp:60
bool addTrajectoryFromProject(const std::string &projectName, const std::string &trajectoryName) noexcept
Definition ThunderAutoSendableChooser.cpp:64
Definition ThunderAutoSendableChooser.hpp:30
Definition TrajectoryRunnerProperties.hpp:14