Class SelectCommand

  • All Implemented Interfaces:
    Sendable, Command

    public class SelectCommand
    extends CommandBase
    Runs one of a selection of commands, either using a selector and a key to command mapping, or a supplier that returns the command directly at runtime. Does not actually schedule the selected command - rather, the command is run through this command; this ensures that the command will behave as expected if used as part of a CommandGroup. Requires the requirements of all included commands, again to ensure proper functioning when used in a CommandGroup. If this is undesired, consider using ScheduleCommand.

    As this command contains multiple component commands within it, it is technically a command group; the command instances that are passed to it cannot be added to any other groups, or scheduled individually.

    As a rule, CommandGroups require the union of the requirements of their component commands.

    • Constructor Detail

      • SelectCommand

        public SelectCommand​(Map<Object,​Command> commands,
                             Supplier<Object> selector)
        Creates a new selectcommand.
        Parameters:
        commands - the map of commands to choose from
        selector - the selector to determine which command to run
      • SelectCommand

        public SelectCommand​(Supplier<Command> toRun)
        Creates a new selectcommand.
        Parameters:
        toRun - a supplier providing the command to run
    • Method Detail

      • initialize

        public void initialize()
        Description copied from interface: Command
        The initial subroutine of a command. Called once when the command is initially scheduled.
      • execute

        public void execute()
        Description copied from interface: Command
        The main body of a command. Called repeatedly while the command is scheduled.
      • end

        public void end​(boolean interrupted)
        Description copied from interface: Command
        The action to take when the command ends. Called when either the command finishes normally, or when it interrupted/canceled.

        Do not schedule commands here that share requirements with this command. Use Command.andThen(Command...) instead.

        Parameters:
        interrupted - whether the command was interrupted/canceled
      • isFinished

        public boolean isFinished()
        Description copied from interface: Command
        Whether the command has finished. Once a command finishes, the scheduler will call its end() method and un-schedule it.
        Returns:
        whether the command has finished.
      • runsWhenDisabled

        public boolean runsWhenDisabled()
        Description copied from interface: Command
        Whether the given command should run when the robot is disabled. Override to return true if the command should run when disabled.
        Returns:
        whether the command should run when the robot is disabled