public void loadLevel() {
		BufferedReader br = null;
		try {
			br = new BufferedReader(Gdx.files.internal("levels/lvl" + Integer.toString(level)).reader());
			String line;
			while ((line = br.readLine()) != null) {
				Gdx.app.log("Crate", line);
				char key = line.charAt(0);
				String[] strs;
				switch (key) {
				case 'J':	// Jo data
					strs = line.split(" ");
					jo.setPosition(Float.parseFloat(strs[1]), Float.parseFloat(strs[2]));
					jo.setBounds(Float.parseFloat(strs[1]), Float.parseFloat(strs[2]));
					jo.setInitialPosition(Float.parseFloat(strs[1]), Float.parseFloat(strs[2]));
					break;
				case 'W':	// Wall data
					strs = line.split(" ");
					walls.add(new Wall(new Vector2(Float.parseFloat(strs[1]), Float.parseFloat(strs[2])),
										Float.parseFloat(strs[3]),
										Float.parseFloat(strs[4]),
										Integer.parseInt(strs[5]) == 0 ? Wall.State.CLEAR : Wall.State.OPAQUE));
					break;
				case 'T':
					strs = line.split(" ");
					teleporters.add(new Teleporter(new Vector2(Float.parseFloat(strs[1]), Float.parseFloat(strs[2])),
													new Vector2(Float.parseFloat(strs[3]), Float.parseFloat(strs[4])),
													Integer.parseInt(strs[5]) == 0 ? Teleporter.State.OFF : Teleporter.State.ON));
					break;
				case 'P':
					strs = line.split(" ");
					walls.add(new Wall(new Vector2(Float.parseFloat(strs[1]), Float.parseFloat(strs[2])),
										1f,
										1f,
										Wall.State.PERSISTENT));
					break;
				case '%':
					break;
				}
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		}
	}