adjust OI code to the new packaging system
authorCindy Zhang <cindyzyx9@gmail.com>
Mon, 15 Feb 2016 00:47:31 +0000 (16:47 -0800)
committerKevin Zhang <icestormf1@gmail.com>
Mon, 15 Feb 2016 18:55:21 +0000 (10:55 -0800)
src/org/usfirst/frc/team3501/robot/OI.java

index 1c891af08f5e26dcf2b9e9bb7a3baae61b3ec938..b136a3ca5a23cedab6898de65150bd12af257bb1 100644 (file)
 package org.usfirst.frc.team3501.robot;
 
-import org.usfirst.frc.team3501.robot.commands.shooter.ChangeShooterSpeed;
-import org.usfirst.frc.team3501.robot.commands.shooter.SetShooterSpeed;
+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.PassSallyPort;
+import org.usfirst.frc.team3501.robot.commands.intakearm.IntakeBall;
+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.shooter.Shoot;
+import org.usfirst.frc.team3501.robot.commands.shooter.runShooter;
 
+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;
-  public static Button decrementShooterSpeed;
-  public static Button incrementShooterSpeed;
-  public static Button outputCurrentShooterSpeed;
-  public static Button trigger;
+
+  // first column of arcade buttons - getting past defenses
+  public static DigitalButton passPortcullis;
+  public static DigitalButton passChevalDeFrise;
+  public static DigitalButton passDrawbridge;
+  public static DigitalButton passSallyPort;
+
+  // second column of arcade buttons - different angles for intake arm
+  // TO DO: change position numbers to angle values (?)
+  public static DigitalButton lowerChevalDeFrise;
+  public static DigitalButton moveToIntakeBoulder;
+  public static DigitalButton poiseAboveChevalDeFrise;
+  public static DigitalButton moveIntakeArmInsideRobot;
+
+  // left joystick buttons
+  public static Button toggleShooter;
+  public static Button SpinRobot180_1; // both do the same thing, just two
+  public static Button SpinRobot180_2; // different buttons
+  public static Button compactRobot_1;
+  public static Button compactRobot_2;
+
+  // right joystick buttons
+  public static Button intakeBoulder;
+  public static Button shootBoulder;
+
+  // button to change robot to the scaling mode
+  public static DigitalButton toggleScalingMode;
 
   public OI() {
     leftJoystick = new Joystick(Constants.OI.LEFT_STICK_PORT);
     rightJoystick = new Joystick(Constants.OI.RIGHT_STICK_PORT);
 
-    decrementShooterSpeed = new JoystickButton(rightJoystick,
-        Constants.OI.DECREMENT_SHOOTER_SPEED_PORT);
-    decrementShooterSpeed.whenPressed(new ChangeShooterSpeed(-0.1));
+    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));
+
+    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);
+    compactRobot_1 = new JoystickButton(leftJoystick,
+        Constants.OI.LEFT_JOYSTICK_TOP_CENTER_PORT);
+    compactRobot_2 = new JoystickButton(leftJoystick,
+        Constants.OI.LEFT_JOYSTICK_TOP_LOW_PORT);
+
+    intakeBoulder = new JoystickButton(rightJoystick,
+        Constants.OI.RIGHT_JOYSTICK_TRIGGER_PORT);
+    shootBoulder = new JoystickButton(rightJoystick,
+        Constants.OI.RIGHT_JOYSTICK_THUMB_PORT);
+
+    toggleScalingMode = new DigitalButton(
+        new DigitalInput(Constants.OI.SCALING_BUTTON_PORT));
+
+    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());
+      compactRobot_1.whenPressed(new CompactRobot());
+
+      intakeBoulder.whenPressed(new IntakeBall());
+      shootBoulder.whenPressed(new Shoot());
 
-    incrementShooterSpeed = new JoystickButton(rightJoystick,
-        Constants.OI.INCREMENT_SHOOTER_SPEED_PORT);
-    incrementShooterSpeed.whenPressed(new ChangeShooterSpeed(0.1));
+    } else if (isScalingMode) {
+      toggleShooter.toggleWhenPressed(new WinchIn());
+      compactRobot_1.whenPressed(new RetractLift());
 
-    outputCurrentShooterSpeed = new JoystickButton(rightJoystick,
-        Constants.OI.SHOOT_PORT);
+      intakeBoulder.toggleWhenPressed(new WinchOut());
+      shootBoulder.whenPressed(new ExtendLift());
+    }
 
-    trigger = new JoystickButton(rightJoystick, Constants.OI.TRIGGER_PORT);
-    trigger.whenPressed(new SetShooterSpeed(0.5));
-    trigger.whenReleased(new SetShooterSpeed(0.0));
+    SpinRobot180_1
+    .whenPressed(/* rotate robot 180, reorient joystick controls */);
 
   }
 }