Change shooter to function off of two pistons, remove punch, shooter motors, and...
[3501/stronghold-2016] / src / org / usfirst / frc / team3501 / robot / OI.java
index b136a3ca5a23cedab6898de65150bd12af257bb1..3eb1c1f5ebac159a2962441f99f077d1726fc56a 100644 (file)
@@ -1,24 +1,27 @@
 package org.usfirst.frc.team3501.robot;
 
+import org.usfirst.frc.team3501.robot.commands.auton.CompactRobot;
 import org.usfirst.frc.team3501.robot.commands.auton.PassChevalDeFrise;
 import org.usfirst.frc.team3501.robot.commands.auton.PassDrawBridge;
+import org.usfirst.frc.team3501.robot.commands.auton.PassPortcullis;
 import org.usfirst.frc.team3501.robot.commands.auton.PassSallyPort;
+import org.usfirst.frc.team3501.robot.commands.driving.Turn180;
 import org.usfirst.frc.team3501.robot.commands.intakearm.IntakeBall;
+import org.usfirst.frc.team3501.robot.commands.intakearm.MoveIntakeArmToAngle;
 import org.usfirst.frc.team3501.robot.commands.scaler.ExtendLift;
 import org.usfirst.frc.team3501.robot.commands.scaler.RetractLift;
+import org.usfirst.frc.team3501.robot.commands.scaler.RunWinchContinuous;
+import org.usfirst.frc.team3501.robot.commands.scaler.StopWinch;
+import org.usfirst.frc.team3501.robot.commands.scaler.ToggleScaling;
 import org.usfirst.frc.team3501.robot.commands.shooter.Shoot;
-import org.usfirst.frc.team3501.robot.commands.shooter.runShooter;
+import org.usfirst.frc.team3501.robot.subsystems.IntakeArm;
 
 import edu.wpi.first.wpilibj.DigitalInput;
 import edu.wpi.first.wpilibj.Joystick;
 import edu.wpi.first.wpilibj.buttons.Button;
 import edu.wpi.first.wpilibj.buttons.JoystickButton;
-import edu.wpi.first.wpilibj.command.Scheduler;
 
 public class OI {
-  public static boolean isScalingMode = false;
-  public static boolean isCompactRobot = false;
-
   public static Joystick leftJoystick;
   public static Joystick rightJoystick;
 
@@ -47,36 +50,56 @@ public class OI {
   public static Button shootBoulder;
 
   // button to change robot to the scaling mode
-  public static DigitalButton toggleScalingMode;
+  public static DigitalButton toggleScaling;
 
   public OI() {
     leftJoystick = new Joystick(Constants.OI.LEFT_STICK_PORT);
     rightJoystick = new Joystick(Constants.OI.RIGHT_STICK_PORT);
 
-    passPortcullis = new DigitalButton(
-        new DigitalInput(Constants.OI.PASS_PORTCULLIS_PORT));
-    passChevalDeFrise = new DigitalButton(
-        new DigitalInput(Constants.OI.PASS_CHEVAL_DE_FRISE_PORT));
-    passDrawbridge = new DigitalButton(
-        new DigitalInput(Constants.OI.PASS_DRAWBRIDGE));
-    passSallyPort = new DigitalButton(
-        new DigitalInput(Constants.OI.PASS_SALLYPORT_PORT));
-
-    lowerChevalDeFrise = new DigitalButton(
-        new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_ONE_PORT));
-    moveToIntakeBoulder = new DigitalButton(
-        new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_TWO_PORT));
-    poiseAboveChevalDeFrise = new DigitalButton(
-        new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_THREE_PORT));
-    moveIntakeArmInsideRobot = new DigitalButton(
-        new DigitalInput(Constants.OI.ARCADE_INTAKEARM_LEVEL_FOUR_PORT));
+    passPortcullis = new DigitalButton(new DigitalInput(
+        Constants.OI.PASS_PORTCULLIS_PORT));
+    passPortcullis.whenPressed(new PassPortcullis());
+
+    passChevalDeFrise = new DigitalButton(new DigitalInput(
+        Constants.OI.PASS_CHEVAL_DE_FRISE_PORT));
+    passChevalDeFrise.whenPressed(new PassChevalDeFrise());
+
+    passDrawbridge = new DigitalButton(new DigitalInput(
+        Constants.OI.PASS_DRAWBRIDGE_PORT));
+    passDrawbridge.whenPressed(new PassDrawBridge());
+
+    passSallyPort = new DigitalButton(new DigitalInput(
+        Constants.OI.PASS_SALLYPORT_PORT));
+    passSallyPort.whenPressed(new PassSallyPort());
+
+    lowerChevalDeFrise = new DigitalButton(new DigitalInput(
+        Constants.OI.ARCADE_INTAKEARM_LEVEL_ONE_PORT));
+    lowerChevalDeFrise.whenPressed(new MoveIntakeArmToAngle(
+        IntakeArm.potAngles[0], IntakeArm.moveIntakeArmSpeed));
+
+    moveToIntakeBoulder = new DigitalButton(new DigitalInput(
+        Constants.OI.ARCADE_INTAKEARM_LEVEL_TWO_PORT));
+    moveToIntakeBoulder.whenPressed(new MoveIntakeArmToAngle(
+        IntakeArm.potAngles[1], IntakeArm.moveIntakeArmSpeed));
+
+    poiseAboveChevalDeFrise = new DigitalButton(new DigitalInput(
+        Constants.OI.ARCADE_INTAKEARM_LEVEL_THREE_PORT));
+    poiseAboveChevalDeFrise.whenPressed(new MoveIntakeArmToAngle(
+        IntakeArm.potAngles[2], IntakeArm.moveIntakeArmSpeed));
+
+    moveIntakeArmInsideRobot = new DigitalButton(new DigitalInput(
+        Constants.OI.ARCADE_INTAKEARM_LEVEL_FOUR_PORT));
+    moveIntakeArmInsideRobot.whenPressed(new MoveIntakeArmToAngle(
+        IntakeArm.potAngles[3], IntakeArm.moveIntakeArmSpeed));
 
     toggleShooter = new JoystickButton(leftJoystick,
         Constants.OI.LEFT_JOYSTICK_TRIGGER_PORT);
-    SpinRobot180_1 = new JoystickButton(leftJoystick,
-        Constants.OI.LEFT_JOYSTICK_TOP_LEFT_PORT);
-    SpinRobot180_2 = new JoystickButton(leftJoystick,
-        Constants.OI.LEFT_JOYSTICK_TOP_RIGHT_PORT);
+    SpinRobot180_1 = new JoystickButton(leftJoystick, Constants.OI.SPIN1_PORT);
+    SpinRobot180_1.whenPressed(new Turn180());
+
+    SpinRobot180_2 = new JoystickButton(leftJoystick, Constants.OI.SPIN2_PORT);
+    SpinRobot180_2.whenPressed(new Turn180());
+
     compactRobot_1 = new JoystickButton(leftJoystick,
         Constants.OI.LEFT_JOYSTICK_TOP_CENTER_PORT);
     compactRobot_2 = new JoystickButton(leftJoystick,
@@ -87,47 +110,29 @@ public class OI {
     shootBoulder = new JoystickButton(rightJoystick,
         Constants.OI.RIGHT_JOYSTICK_THUMB_PORT);
 
-    toggleScalingMode = new DigitalButton(
-        new DigitalInput(Constants.OI.SCALING_BUTTON_PORT));
+    toggleScaling = new DigitalButton(new DigitalInput(
+        Constants.OI.TOGGLE_SCALING_PORT));
+    toggleScaling.whenPressed(new ToggleScaling());
 
-    passPortcullis.whenPressed(new PassPortcullis());
-    passChevalDeFrise.whenPressed(new PassChevalDeFrise());
-    passDrawbridge.whenPressed(new PassDrawBridge());
-    passSallyPort.whenPressed(new PassSallyPort());
-
-    lowerChevalDeFrise
-    .whenPressed(/* TO DO: define this, and fill in commands */);
-
-    if (toggleScalingMode.get()) {
-      if (!isScalingMode) {
-        isScalingMode = true;
-        if (!isCompactRobot) {
-          Scheduler.getInstance().add(new CompactRobot());
-          isCompactRobot = true;
-        }
-      } else if (isScalingMode) {
-        isScalingMode = false;
-        Scheduler.getInstance().add(new CompactRobot());
-      }
-    }
-
-    if (!isScalingMode) {
-      toggleShooter.toggleWhenPressed(new runShooter());
+    if (!Constants.Scaler.SCALING) {
       compactRobot_1.whenPressed(new CompactRobot());
+      compactRobot_2.whenPressed(new CompactRobot());
 
       intakeBoulder.whenPressed(new IntakeBall());
       shootBoulder.whenPressed(new Shoot());
 
-    } else if (isScalingMode) {
-      toggleShooter.toggleWhenPressed(new WinchIn());
+    } else {
+      // toggleShooter becomes winch
+      // compact robot button 1 and 2 retracts the lift
+      // intake button stops the winch
+      // shoot button extends the lift
+      toggleShooter.whenPressed(new RunWinchContinuous(
+          Constants.Scaler.SCALE_SPEED, Constants.Scaler.SECONDS_TO_SCALE));
       compactRobot_1.whenPressed(new RetractLift());
+      compactRobot_2.whenPressed(new RetractLift());
 
-      intakeBoulder.toggleWhenPressed(new WinchOut());
+      intakeBoulder.whenReleased(new StopWinch());
       shootBoulder.whenPressed(new ExtendLift());
     }
-
-    SpinRobot180_1
-    .whenPressed(/* rotate robot 180, reorient joystick controls */);
-
   }
 }