Change shooter to function off of two pistons, remove punch, shooter motors, and...
[3501/stronghold-2016] / src / org / usfirst / frc / team3501 / robot / commands / shooter / Shoot.java
index 95270bd7dbe847b08a1a391989318b8074b52436..0b80c1d9c349f7d8b0ddcde6d0bd936e2f632f26 100755 (executable)
@@ -1,19 +1,33 @@
 package org.usfirst.frc.team3501.robot.commands.shooter;
 
-import org.usfirst.frc.team3501.robot.commands.auton.AimAndAlign;
+import org.usfirst.frc.team3501.robot.Constants;
+import org.usfirst.frc.team3501.robot.Robot;
 
 import edu.wpi.first.wpilibj.command.CommandGroup;
 import edu.wpi.first.wpilibj.command.WaitCommand;
 
 public class Shoot extends CommandGroup {
 
+  public boolean usePhotogate;
+
+  /**
+   * Fires catapult, then resets after a pause. If robot is set to use photogate
+   * and no ball is detected, nothing happens.
+   * 
+   * Precondition: catapult is in reset position, and ball is loaded in
+   * catapult.
+   */
   public Shoot() {
-    addSequential(new AimAndAlign());
-    addSequential(new WaitCommand(3.0));
-    addSequential(new runShooter());
-    addSequential(new WaitCommand(3.0));
-    addSequential(new ExtendPunch());
-    addSequential(new WaitCommand(5.0));
-    addSequential(new RetractPunch());
+    if (Robot.shooter.usePhotogate()) {
+      if (Robot.shooter.isBallInside()) {
+        addSequential(new FireCatapult());
+        addSequential(new WaitCommand(Constants.Shooter.WAIT_TIME));
+        addSequential(new ResetCatapult());
+      }
+    } else {
+      addSequential(new FireCatapult());
+      addSequential(new WaitCommand(Constants.Shooter.WAIT_TIME));
+      addSequential(new ResetCatapult());
+    }
   }
 }