[commands] Refactor lambda-based commands to inherit FunctionalCommand (#4451)

This commit is contained in:
Starlight220
2022-10-07 01:49:27 +03:00
committed by GitHub
parent b2276e47de
commit 5cf961edb9
9 changed files with 44 additions and 119 deletions

View File

@@ -8,22 +8,14 @@ using namespace frc2;
InstantCommand::InstantCommand(std::function<void()> toRun,
std::initializer_list<Subsystem*> requirements)
: m_toRun{std::move(toRun)} {
AddRequirements(requirements);
}
: CommandHelper(
std::move(toRun), [] {}, [](bool interrupted) {}, [] { return true; },
requirements) {}
InstantCommand::InstantCommand(std::function<void()> toRun,
wpi::span<Subsystem* const> requirements)
: m_toRun{std::move(toRun)} {
AddRequirements(requirements);
}
: CommandHelper(
std::move(toRun), [] {}, [](bool interrupted) {}, [] { return true; },
requirements) {}
InstantCommand::InstantCommand() : m_toRun{[] {}} {}
void InstantCommand::Initialize() {
m_toRun();
}
bool InstantCommand::IsFinished() {
return true;
}
InstantCommand::InstantCommand() : InstantCommand([] {}) {}

View File

@@ -8,16 +8,10 @@ using namespace frc2;
RunCommand::RunCommand(std::function<void()> toRun,
std::initializer_list<Subsystem*> requirements)
: m_toRun{std::move(toRun)} {
AddRequirements(requirements);
}
: CommandHelper([] {}, std::move(toRun), [](bool interrupted) {},
[] { return false; }, requirements) {}
RunCommand::RunCommand(std::function<void()> toRun,
wpi::span<Subsystem* const> requirements)
: m_toRun{std::move(toRun)} {
AddRequirements(requirements);
}
void RunCommand::Execute() {
m_toRun();
}
: CommandHelper([] {}, std::move(toRun), [](bool interrupted) {},
[] { return false; }, requirements) {}

View File

@@ -9,27 +9,15 @@ using namespace frc2;
StartEndCommand::StartEndCommand(std::function<void()> onInit,
std::function<void()> onEnd,
std::initializer_list<Subsystem*> requirements)
: m_onInit{std::move(onInit)}, m_onEnd{std::move(onEnd)} {
AddRequirements(requirements);
}
: CommandHelper(
std::move(onInit), [] {},
[onEnd = std::move(onEnd)](bool interrupted) { onEnd(); },
[] { return false; }, requirements) {}
StartEndCommand::StartEndCommand(std::function<void()> onInit,
std::function<void()> onEnd,
wpi::span<Subsystem* const> requirements)
: m_onInit{std::move(onInit)}, m_onEnd{std::move(onEnd)} {
AddRequirements(requirements);
}
StartEndCommand::StartEndCommand(const StartEndCommand& other)
: CommandHelper(other) {
m_onInit = other.m_onInit;
m_onEnd = other.m_onEnd;
}
void StartEndCommand::Initialize() {
m_onInit();
}
void StartEndCommand::End(bool interrupted) {
m_onEnd();
}
: CommandHelper(
std::move(onInit), [] {},
[onEnd = std::move(onEnd)](bool interrupted) { onEnd(); },
[] { return false; }, requirements) {}