// 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 frc4388.utility;

/** Add your docs here. */
public class Gains {
  public double m_kP;
  public double m_kI;
  public double m_kD;
  public double m_kF;
  public int m_kIzone;
  public double m_kPeakOutput;
  public double m_kmaxOutput;
  public double m_kminOutput;

  /**
   * Creates Gains object for PIDs
   * @param kP The P value.
   * @param kI The I value.
   * @param kD The D value.
   * @param kF The F value.
   * @param kIzone The zone of the I value.
   * @param kPeakOutput The peak output setting the motors to run the gains at, in both forward and reverse directions. By default 1.0.
   */
  public Gains(double kP, double kI, double kD, double kF, int kIzone, double kPeakOutput)
  {
    m_kP = kP;
    m_kI = kI;
    m_kD = kD;
    m_kF = kF;
    m_kIzone = kIzone;
    m_kPeakOutput = kPeakOutput;
    m_kmaxOutput = m_kPeakOutput;
    m_kminOutput = -m_kPeakOutput;
  }

  /**
   * Creates Gains object for PIDs
   * @param kP The P value.
   * @param kI The I value.
   * @param kD The D value.
   * @param kF The F value.
   * @param kIzone The zone of the I value.
   * @param kMinOutput The lowest output setting to run the gains at, usually in the reverse direction. By default -1.0.
   * @param kMaxOutput The highest output setting to run the gains at, usually in the forward direction. By default 1.0.
   */
  public Gains(double kP, double kI, double kD, double kF, int kIzone, double kMinOutput, double kMaxOutput)
  {
    m_kP = kP;
    m_kI = kI;
    m_kD = kD;
    m_kF = kF;
    m_kIzone = kIzone;
    m_kminOutput = kMinOutput;
    m_kmaxOutput = kMaxOutput;
    m_kPeakOutput = (Math.abs(m_kminOutput) > Math.abs(m_kmaxOutput)) ? Math.abs(m_kminOutput) : Math.abs(m_kmaxOutput);
  }
}
