/**
  * Exit function for state. Fades out and everything.
  *
  * @param container the GameContainer we are running in
  * @param sbg the gamestate cont.
  * @param delta the deltatime in ms
  */
 public void exit(GameContainer container, StateBasedGame sbg, int delta) {
   if (mainGame.getShouldSwitchState()) {
     if (RND.getInstance().getOpacity() > 0.0f) {
       RND.getInstance()
           .setOpacity(
               RND.getInstance().getOpacity() - ((float) delta) / mainGame.getOpacityFadeTimer());
     } else {
       Logger.getInstance()
           .log("Exiting MenuMultiplayerState", Logger.PriorityLevels.LOW, "States");
       if (mainGame.getSwitchState() == -1) {
         container.exit();
       } else {
         mainGame.switchColor();
         sbg.enterState(mainGame.getSwitchState());
       }
     }
   }
 }
  /**
   * Update this state.
   *
   * @param container The gamecontainer that contains this state
   * @param sbg the state based game that uses this state
   * @param delta the time in ms since the last frame
   * @throws SlickException if something goes wrong
   */
  public void update(GameContainer container, StateBasedGame sbg, int delta) throws SlickException {

    if (RND.getInstance().getOpacity() < 1.0f && !mainGame.getShouldSwitchState()) {
      RND.getInstance()
          .setOpacity(
              RND.getInstance().getOpacity() + ((float) delta) / mainGame.getOpacityFadeTimer());
    }

    input = container.getInput();
    nameField.update(input);
    ipField.update(input);
    elements.update(input);

    if ((input.isMousePressed(Input.MOUSE_LEFT_BUTTON) || input.isKeyDown(Input.KEY_ENTER))
        && !mainGame.getShouldSwitchState()) {
      processButtons(input);
    }

    SoundPlayer.getInstance().playEffects();

    exit(container, sbg, delta);
  }