[commands] Add Trigger.onChange() (#6390)

This commit is contained in:
Jacob Hotz
2024-04-22 00:37:15 -05:00
committed by GitHub
parent b620b6a4dd
commit dc4c63568a
3 changed files with 71 additions and 0 deletions

View File

@@ -49,6 +49,32 @@ public class Trigger implements BooleanSupplier {
this(CommandScheduler.getInstance().getDefaultButtonLoop(), condition);
}
/**
* Starts the command when the condition changes.
*
* @param command the command to start
* @return this trigger, so calls can be chained
*/
public Trigger onChange(Command command) {
requireNonNullParam(command, "command", "onChange");
m_loop.bind(
new Runnable() {
private boolean m_pressedLast = m_condition.getAsBoolean();
@Override
public void run() {
boolean pressed = m_condition.getAsBoolean();
if (m_pressedLast != pressed) {
command.schedule();
}
m_pressedLast = pressed;
}
});
return this;
}
/**
* Starts the given command whenever the condition changes from `false` to `true`.
*