// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.

package frc.robot;

import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.auto.NamedCommands;
import com.pathplanner.lib.auto.AutoBuilder;
import com.pathplanner.lib.auto.NamedCommands;
import edu.wpi.first.math.MathUtil;
import edu.wpi.first.wpilibj.smartdashboard.SendableChooser;
import edu.wpi.first.wpilibj2.command.Command;
import edu.wpi.first.wpilibj2.command.Commands;
import edu.wpi.first.wpilibj2.command.RunCommand;
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
import frc.robot.commands.AlgueExpire;
import frc.robot.commands.CoralAlgueInspire;
import frc.robot.commands.CoralExpire;
import frc.robot.commands.CoralInspire;
import frc.robot.commands.Depart;
import frc.robot.commands.DepartPince;
import frc.robot.commands.ElevateurManuel;
import frc.robot.commands.L2;
import frc.robot.commands.L3;
import frc.robot.commands.L4;
import frc.robot.commands.StationPince;
import frc.robot.subsystems.Elevateur;
import frc.robot.subsystems.Pince;

public class RobotContainer {
  
  CommandXboxController manette1 = new CommandXboxController(0);
  CommandXboxController manette2 = new CommandXboxController(1);
 // private final SendableChooser<Command> autoChooser;
  Pince pince = new Pince();
  Elevateur elevateur = new Elevateur();
  ElevateurManuel elevateurManuel = new ElevateurManuel(elevateur, manette2::getLeftY);
  public RobotContainer() {
    configureBindings();
    elevateur.setDefaultCommand(new RunCommand(()->{
      elevateur.vitesse(MathUtil.applyDeadband(manette2.getLeftY(), 0.2));
    }, elevateur));
   /*  NamedCommands.registerCommand("Station",new StationPince(pince, elevateur));
    NamedCommands.registerCommand("L4", new L4(elevateur, pince));
    NamedCommands.registerCommand("L3", new L3(elevateur, pince));
    NamedCommands.registerCommand("CoralExpire",new CoralExpire(pince));
    NamedCommands.registerCommand("CoralInspire", new CoralInspire(pince));
    NamedCommands.registerCommand("CoraletAlgue", new CoralAlgueInspire(pince));
    autoChooser = AutoBuilder.buildAutoChooser();*/
  }

  private void configureBindings() {
    // manette1
    manette1.a().whileTrue(new AlgueExpire(pince));
    manette1.b().whileTrue(new CoralAlgueInspire(pince));
    manette1.x().whileTrue(new CoralInspire(pince));
    manette1.y().whileTrue(new CoralExpire(pince));
    manette1.povUp().whileTrue(new L4(elevateur, pince));
    manette1.povRight().whileTrue(new L2(elevateur, pince));
    manette1.povLeft().whileTrue(new L3(elevateur, pince));
    manette1.povDown().whileTrue(new Depart(elevateur, pince));
    //manette2
    manette2.leftBumper().toggleOnTrue(new DepartPince(pince));
    manette2.a().whileTrue(new StationPince(pince,elevateur));
  }

  public Command getAutonomousCommand() {
    return null;// autoChooser.getSelected();
  }
}