public static void init(GameController gc, Registry r) {
    int version;

    registry = r;

    resolutions = new ArrayList();
    resolutions.add("800x600");
    resolutions.add("1024x768");
    resolutions.add("1152x864");
    resolutions.add("1280x720");
    resolutions.add("1280x768");
    resolutions.add("1280x800");
    resolutions.add("1280x960");
    resolutions.add("1280x1024");
    resolutions.add("1360x768");
    resolutions.add("1366x768");
    resolutions.add("1440x900");
    resolutions.add("1600x900");
    resolutions.add("1600x1024");
    resolutions.add("1680x1050");
    resolutions.add("1920x1080");
    resolutions.add("1920x1200");
    // resolutions.add("Full Screen");

    players = new ArrayList<Player>();
    blockManagers = new ArrayList<BlockManager>();
    placeableManagers = new ArrayList<PlaceableManager>();
    monsterManagers = new ArrayList<MonsterManager>();

    // try to load the settings file
    try {
      FileInputStream settingsFile = new FileInputStream("Settings.dat");
      ObjectInputStream settings = new ObjectInputStream(settingsFile);

      version = ((Integer) settings.readObject()).intValue();
      resolution = ((Integer) settings.readObject()).intValue();
      volumeMusic = ((Integer) settings.readObject()).intValue();
      volumeFX = ((Integer) settings.readObject()).intValue();
      buttonMoveRight = ((Integer) settings.readObject()).intValue();
      buttonMoveLeft = ((Integer) settings.readObject()).intValue();
      buttonJump = ((Integer) settings.readObject()).intValue();
      buttonAction = ((Integer) settings.readObject()).intValue();
      buttonRobot = ((Integer) settings.readObject()).intValue();
      buttonInventory = ((Integer) settings.readObject()).intValue();
      buttonPause = ((Integer) settings.readObject()).intValue();

      settings.close();
    } catch (Exception e) {
      EIError.debugMsg(e.getMessage(), EIError.ErrorLevel.Warning);
    }

    if (volumeMusic < -1 || volumeMusic > 10) {
      volumeMusic = 8;
    }
    if (volumeMusic == 0) {
      volumeMusic = 8;
    }
    if (volumeMusic == -1) {
      volumeMusic = 0;
    }

    if (volumeFX < -1 || volumeFX > 10) {
      volumeFX = 8;
    }
    if (volumeFX == 0) {
      volumeFX = 8;
    }
    if (volumeFX == -1) {
      volumeFX = 0;
    }

    if (buttonMoveRight == 0) {
      buttonMoveRight = KeyEvent.VK_D;
    }
    if (buttonMoveLeft == 0) {
      buttonMoveLeft = KeyEvent.VK_A;
    }
    if (buttonJump == 0) {
      buttonJump = KeyEvent.VK_SPACE;
    }
    if (buttonAction == 0) {
      buttonAction = KeyEvent.VK_E;
    }
    if (buttonRobot == 0) {
      buttonRobot = KeyEvent.VK_R;
    }
    if (buttonInventory == 0) {
      buttonInventory = KeyEvent.VK_I;
    }
    if (buttonPause == 0) {
      buttonPause = KeyEvent.VK_P;
    }

    // try to load the players
    for (int i = 1; i <= NUMBER_OF_PLAYER_SLOTS; i++) {
      try {
        FileInputStream playerFile = new FileInputStream("Player" + i + ".dat");
        ObjectInputStream playerInfo = new ObjectInputStream(playerFile);

        version = ((Integer) playerInfo.readObject()).intValue();
        players.add((Player) playerInfo.readObject());
        blockManagers.add((BlockManager) playerInfo.readObject());
        placeableManagers.add((PlaceableManager) playerInfo.readObject());

        MonsterManager mm = null;
        if (version >= 2) {
          mm = (MonsterManager) playerInfo.readObject();
        }
        if (mm == null) {
          mm = new MonsterManager(gc, r);
        }
        monsterManagers.add(mm);

        playerInfo.close();
        EIError.debugMsg("Added Player " + i);
      } catch (Exception e) {
        if (players.size() >= i) {
          players.set(i - 1, null);
        } else {
          players.add(null);
        }
        if (blockManagers.size() >= i) {
          blockManagers.set(i - 1, null);
        } else {
          blockManagers.add(null);
        }
        if (placeableManagers.size() >= i) {
          placeableManagers.set(i - 1, null);
        } else {
          placeableManagers.add(null);
        }
        if (monsterManagers.size() >= i) {
          monsterManagers.set(i - 1, null);
        } else {
          monsterManagers.add(null);
        }
        EIError.debugMsg(
            "Couldn't load Player " + i + " " + e.getMessage(), EIError.ErrorLevel.Error);
      }
    }
  }
 private void readObject(ObjectInputStream aInputStream) throws Exception {
   aInputStream.defaultReadObject();
 }