From db66cf8d55bf6b7d6bbbf4ae8a240812f0fdb007 Mon Sep 17 00:00:00 2001 From: 66945 <54561572+66945@users.noreply.github.com> Date: Sat, 19 Mar 2022 11:10:04 -0600 Subject: [PATCH] Made better commandChooser --- .../java/frc4388/robot/RobotContainer.java | 15 ++++-- .../robot/commands/CommandChooser.java | 49 ++++++++----------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/main/java/frc4388/robot/RobotContainer.java b/src/main/java/frc4388/robot/RobotContainer.java index 719c3da..db5d677 100644 --- a/src/main/java/frc4388/robot/RobotContainer.java +++ b/src/main/java/frc4388/robot/RobotContainer.java @@ -19,9 +19,12 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.function.BooleanSupplier; import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; @@ -379,10 +382,14 @@ public class RobotContainer { // .whenPressed(new RunTurretOrClimberAuto(m_robotTurret, m_robotSwerveDrive, m_robotVisionOdometry, m_robotClimber, m_robotClaws)) // * CommandChooser with BooleanSuppliers - .whenPressed(new CommandChooser(new RunClimberPath(m_robotClimber, m_robotClaws, new Point[] {new Point()}), - new AimToCenter(m_robotTurret, m_robotSwerveDrive, m_robotVisionOdometry), - () -> this.currentControlMode.equals(SubsystemMode.CLIMBER), - () -> this.currentControlMode.equals(SubsystemMode.SHOOTER))) + .whenPressed(new CommandChooser(new HashMap() {{ + put(new RunClimberPath(m_robotClimber, m_robotClaws, new Point[] {new Point()}), () -> currentControlMode.equals(SubsystemMode.CLIMBER)); + put(new AimToCenter(m_robotTurret, m_robotSwerveDrive, m_robotVisionOdometry), () -> currentControlMode.equals(SubsystemMode.SHOOTER)); + }})) + // .whenPressed(new CommandChooser(new RunClimberPath(m_robotClimber, m_robotClaws, new Point[] {new Point()}), + // new AimToCenter(m_robotTurret, m_robotSwerveDrive, m_robotVisionOdometry), + // () -> this.currentControlMode.equals(SubsystemMode.CLIMBER), + // () -> this.currentControlMode.equals(SubsystemMode.SHOOTER))) .whenReleased(new InstantCommand(() -> { if (this.currentControlMode.equals(SubsystemMode.SHOOTER)) { this.currentTurretMode = ControlMode.AUTONOMOUS; } diff --git a/src/main/java/frc4388/robot/commands/CommandChooser.java b/src/main/java/frc4388/robot/commands/CommandChooser.java index be1e273..fa66a02 100644 --- a/src/main/java/frc4388/robot/commands/CommandChooser.java +++ b/src/main/java/frc4388/robot/commands/CommandChooser.java @@ -4,69 +4,62 @@ package frc4388.robot.commands; +import java.util.Collections; +import java.util.HashMap; import java.util.Set; import java.util.function.BooleanSupplier; import edu.wpi.first.wpilibj2.command.Command; import edu.wpi.first.wpilibj2.command.CommandBase; -import edu.wpi.first.wpilibj2.command.CommandGroupBase; import edu.wpi.first.wpilibj2.command.Subsystem; public class CommandChooser extends CommandBase { - private Command c1; - private Command c2; - - private Boolean b1; - private Boolean b2; + private HashMap commandMap; - private Command chosen; + // // private Command chosen; /** Creates a new CommandChooser. */ - public CommandChooser(Command c1, Command c2, BooleanSupplier bs1, BooleanSupplier bs2) { - // Use addRequirements() here to declare subsystem dependencies. + public CommandChooser(HashMap commandMap) { + this.commandMap = commandMap; - this.c1 = c1; - this.c2 = c2; + Set allReqs = Collections.emptySet(); - this.b1 = bs1.getAsBoolean(); - this.b2 = bs2.getAsBoolean(); + for(Command command : commandMap.keySet()) + allReqs.addAll(command.getRequirements()); - Set allReqs = c1.getRequirements(); - allReqs.addAll(c2.getRequirements()); addRequirements((Subsystem[]) allReqs.toArray()); } - public Command getChosen() { - if (this.b1) { - return this.c1; - } else { - return this.c2; - } - } - // Called when the command is initially scheduled. @Override public void initialize() { - this.chosen = getChosen(); - this.chosen.initialize(); + for(Command command : commandMap.keySet()) + if(commandMap.get(command).getAsBoolean()) command.initialize(); } // Called every time the scheduler runs while the command is scheduled. @Override public void execute() { - this.chosen.execute(); + for(Command command : commandMap.keySet()) + if(commandMap.get(command).getAsBoolean()) command.execute(); } // Called once the command ends or is interrupted. @Override public void end(boolean interrupted) { - this.chosen.end(interrupted); + for(Command command : commandMap.keySet()) + if(commandMap.get(command).getAsBoolean()) command.end(interrupted); } // Returns true when the command should end. @Override public boolean isFinished() { - return this.chosen.isFinished(); + boolean finished = true; + + for(Command command : commandMap.keySet()) + if(commandMap.get(command).getAsBoolean()) finished &= command.isFinished(); + + return finished; } }