// 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.

// THIS FILE WAS AUTO-GENERATED BY ./wpilibj/generate_hids.py. DO NOT MODIFY

package org.wpilib.simulation;

import org.wpilib.driverstation.NiDsStadiaController;

/** Class to control a simulated NiDsStadia controller. */
public class NiDsStadiaControllerSim extends GenericHIDSim {
  /**
   * Constructs from a NiDsStadiaController object.
   *
   * @param joystick controller to simulate
   */
  @SuppressWarnings("this-escape")
  public NiDsStadiaControllerSim(NiDsStadiaController joystick) {
    super(joystick);
    setAxesMaximumIndex(4);
    setButtonsMaximumIndex(15);
    setPOVsMaximumIndex(1);
  }

  /**
   * Constructs from a joystick port number.
   *
   * @param port port number
   */
  @SuppressWarnings("this-escape")
  public NiDsStadiaControllerSim(int port) {
    super(port);
    setAxesMaximumIndex(4);
    setButtonsMaximumIndex(15);
    setPOVsMaximumIndex(1);
  }

  /**
   * Change the left X value of the controller's joystick.
   *
   * @param value the new value
   */
  public void setLeftX(double value) {
    setRawAxis(NiDsStadiaController.Axis.kLeftX.value, value);
  }

  /**
   * Change the right X value of the controller's joystick.
   *
   * @param value the new value
   */
  public void setRightX(double value) {
    setRawAxis(NiDsStadiaController.Axis.kRightX.value, value);
  }

  /**
   * Change the left Y value of the controller's joystick.
   *
   * @param value the new value
   */
  public void setLeftY(double value) {
    setRawAxis(NiDsStadiaController.Axis.kLeftY.value, value);
  }

  /**
   * Change the right Y value of the controller's joystick.
   *
   * @param value the new value
   */
  public void setRightY(double value) {
    setRawAxis(NiDsStadiaController.Axis.kRightY.value, value);
  }

  /**
   * Change the value of the A button on the controller.
   *
   * @param value the new value
   */
  public void setAButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kA.value, value);
  }

  /**
   * Change the value of the B button on the controller.
   *
   * @param value the new value
   */
  public void setBButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kB.value, value);
  }

  /**
   * Change the value of the X button on the controller.
   *
   * @param value the new value
   */
  public void setXButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kX.value, value);
  }

  /**
   * Change the value of the Y button on the controller.
   *
   * @param value the new value
   */
  public void setYButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kY.value, value);
  }

  /**
   * Change the value of the left bumper button on the controller.
   *
   * @param value the new value
   */
  public void setLeftBumperButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kLeftBumper.value, value);
  }

  /**
   * Change the value of the right bumper button on the controller.
   *
   * @param value the new value
   */
  public void setRightBumperButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kRightBumper.value, value);
  }

  /**
   * Change the value of the left stick button on the controller.
   *
   * @param value the new value
   */
  public void setLeftStickButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kLeftStick.value, value);
  }

  /**
   * Change the value of the right stick button on the controller.
   *
   * @param value the new value
   */
  public void setRightStickButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kRightStick.value, value);
  }

  /**
   * Change the value of the ellipses button on the controller.
   *
   * @param value the new value
   */
  public void setEllipsesButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kEllipses.value, value);
  }

  /**
   * Change the value of the hamburger button on the controller.
   *
   * @param value the new value
   */
  public void setHamburgerButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kHamburger.value, value);
  }

  /**
   * Change the value of the stadia button on the controller.
   *
   * @param value the new value
   */
  public void setStadiaButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kStadia.value, value);
  }

  /**
   * Change the value of the right trigger button on the controller.
   *
   * @param value the new value
   */
  public void setRightTriggerButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kRightTrigger.value, value);
  }

  /**
   * Change the value of the left trigger button on the controller.
   *
   * @param value the new value
   */
  public void setLeftTriggerButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kLeftTrigger.value, value);
  }

  /**
   * Change the value of the google button on the controller.
   *
   * @param value the new value
   */
  public void setGoogleButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kGoogle.value, value);
  }

  /**
   * Change the value of the frame button on the controller.
   *
   * @param value the new value
   */
  public void setFrameButton(boolean value) {
    setRawButton(NiDsStadiaController.Button.kFrame.value, value);
  }
}
