package com.edinarobotics.zed;

import com.edinarobotics.zed.subsystems.Auger;
import com.edinarobotics.zed.subsystems.Collector;
import com.edinarobotics.zed.subsystems.Conveyor;
import com.edinarobotics.zed.subsystems.Drivetrain;
import com.edinarobotics.zed.subsystems.DrivetrainRotation;
import com.edinarobotics.zed.subsystems.DrivetrainStrafe;
import com.edinarobotics.zed.subsystems.Lifter;
import com.edinarobotics.zed.subsystems.Shooter;

public class Components {
    private static Components instance;
    
    //PWM constants
    //Drivetrain constants
    private static final int FRONT_LEFT_DRIVE_JAGUAR = 3;
    private static final int FRONT_RIGHT_DRIVE_JAGUAR = 1;
    private static final int BACK_LEFT_DRIVE_JAGUAR = 2;
    private static final int BACK_RIGHT_DRIVE_JAGUAR = 4;
    //Collector constants
    private static final int COLLECTOR_LEFT_STAR_SPIKE = 5;
    private static final int COLLECTOR_RIGHT_STAR_SPIKE = 6;
    private static final int COLLECTOR_ROLLER_SPIKE = 7;
    //Conveyor constants
    private static final int CONVEYOR_VICTOR = 8;
    //Auger constants
    private static final int AUGER_SPIKE = 9;
    
    //CAN constants
    //Shooter constants
    private static final int SHOOTER_JAGUAR_FIRST = 1;
    private static final int SHOOTER_JAGUAR_SECOND = 2;
    //Lifter constants
    private static final int LIFTER_JAGUAR = 3;
    
    //Subsystem objects
    public final Drivetrain drivetrain;
    public final DrivetrainStrafe drivetrainStrafe;
    public final DrivetrainRotation drivetrainRotation;
    public final Shooter shooter;
    public final Lifter lifter;
    public final Collector collector;
    public final Conveyor conveyor;
    public final Auger auger;
    
    /**
     * Private constructor for the Components singleton. This constructor
     * is only called once and handles creating all the robot subsystems.
     */
    private Components(){
        drivetrain = new Drivetrain(FRONT_LEFT_DRIVE_JAGUAR, FRONT_RIGHT_DRIVE_JAGUAR,
                BACK_LEFT_DRIVE_JAGUAR, BACK_RIGHT_DRIVE_JAGUAR);
        drivetrainStrafe = new DrivetrainStrafe(drivetrain);
        drivetrainRotation = new DrivetrainRotation(drivetrain);
        shooter = new Shooter(SHOOTER_JAGUAR_FIRST, SHOOTER_JAGUAR_SECOND);
        lifter = new Lifter(LIFTER_JAGUAR);
        collector = new Collector(COLLECTOR_LEFT_STAR_SPIKE, COLLECTOR_RIGHT_STAR_SPIKE,
                COLLECTOR_ROLLER_SPIKE);
        conveyor = new Conveyor(CONVEYOR_VICTOR);
        auger = new Auger(AUGER_SPIKE);
    }
    
    /**
     * Returns a new instance of {@link Components}, creating one if null.
     * @return {@link Components}
     */
    public static Components getInstance() {
        if(instance == null){
            instance = new Components();
        }
        return instance;
    }
    
}

@@ -799,21 +799,20 @@
     //Co
-llect
+nvey
 or const
@@ -851,96 +851,129 @@
 t CO
-LLECTOR_LEFT_STAR_SPIKE = 5
+NVEYOR_VICTOR = 8
 ;%0A    
-private static final int COLLECTOR_RIGHT_STAR_SPIKE = 6
+%0A    //CAN constants%0A    //Shooter constants%0A    private static final int SHOOTER_JAGUAR_FIRST = 1
 ;%0A  
@@ -1003,49 +1003,72 @@
 int 
-COLLECTOR_ROLLER_SPIKE = 7
+SHOOTER_JAGUAR_SECOND = 2
 ;%0A    
-//Conveyo
+%0A    //Relay constants%0A    //Auge
 r co
@@ -1108,35 +1108,31 @@
 int 
-CONVEYOR_VICTOR = 8
+AUGER_SPIKE = 1
 ;%0A    //
 Auge
@@ -1123,27 +1123,28 @@
  = 1;%0A    //
-Aug
+Lift
 er constants
@@ -1165,35 +1165,36 @@
 tatic final int 
-AUG
+LIFT
 ER_SPIKE = 9;%0A  
@@ -1192,48 +1192,25 @@
 E = 
-9
+2
 ;%0A    
-%0A    //CAN constants%0A    //Shoote
+//Collecto
 r co
@@ -1250,32 +1250,37 @@
 int 
-SHOOTER_JAGUAR_FIRST = 1
+COLLECTOR_LEFT_STAR_SPIKE = 3
 ;%0A  
@@ -1310,58 +1310,40 @@
 int 
-SHOOTER_JAGUAR_SECOND = 2
+COLLECTOR_RIGHT_STAR_SPIKE = 4
 ;%0A
-    //Lifter constants%0A
     
@@ -1371,25 +1371,34 @@
 int 
+COLLECTOR_
 LIFTER_
-JAGUAR = 3
+SPIKE = 5
 ;%0A  
@@ -2327,22 +2327,21 @@
 (LIFTER_
-JAGUAR
+SPIKE
 );%0A     
@@ -2454,12 +2454,12 @@
 TOR_
-ROLL
+LIFT
 ER_S

Update naming of constants in Components.