# Akitting The RobotContainer

## Akit in RobotContainer

This is a general outline of what code should go where in your RobotContainer file.

### Setting up your Subsystems

Before the constructor, create instances of all your subsystem classes, but DO NOT define them yet.

```java
private final LinSlideSubsystem linSlide;
private final IntakeSubsystem intake;
private final Hopper hopper;
private final Climber climber;
```

<p class="callout warning">It will give you an error than you haven't defined the variable because it is FINAL, but we will fix it later</p>

###  

### Cases

#### Real

Here, you are actually defining what those subsystems are - for the REAL implementation.

```java
linSlide = new LinSlideSubsystem(new LinSlideIOAlpha());
intake = new IntakeSubsystem(new IntakeIOAlpha());
hopper = new Hopper(new HopperIOAlpha());
climber = new Climber(new ClimberIOAlpha());
```

#### Sim

Here, you are defining the subsystems - for the SIM implementation.

<p class="callout info">If you have a different implementation of the hardware for sim (like we did on Orca), this is where you would put that - This is an example from Orca's code</p>

```java
drive = new Drive(
        new GyroIO() {},
        new ModuleIOSim(TunerConstants.FrontLeft),
        new ModuleIOSim(TunerConstants.FrontRight),
        new ModuleIOSim(TunerConstants.BackLeft),
        new ModuleIOSim(TunerConstants.BackRight));

score = new ScoreMechSubsystem(new ScoreMechIOSim());
elevator = new ElevatorSubsystem(new ElevatorIOTalonFX());

ramp = new RampSubsystem(new RampIOSim());
```

#### Default

Here, you are defining the subsystems with the empty IO class - for the DEFAULT implementation.

<p class="callout warning">This is just to be sure we don't create a subsystem with no definition</p>

```java
linSlide = new LinSlideSubsystem(new LinSlideIO() {});
intake = new IntakeSubsystem(new IntakeIO() {});
hopper = new Hopper(new HopperIO() {});
climber = new Climber(new ClimberIO() {});
```

*You can also define the subsystems outside of the switch case if they are supposed to be the same in all cases.*