public void render(GameContainer gc, Graphics g) {
		Point temp = new Point(0, 0);

		drawEdge(g, 0, 1);
		drawEdge(g, Constants.GAME_WIDTH - 1, 1);
		/*
		 * Draw tiles with scaling - focused on the player.
		 */
		for (int x = xPosition - VIEW_RANGE; x < xPosition + VIEW_RANGE; x++) {
			for (int y = 0; y < lvlHeight; y++) {
				temp.setLocation(x, y);

				Tile t = tileMap.get(temp);
				if (t == null)
					continue;

				if (setupLavaGlow) {
					if (t.isBeatLava()) {
						TileLavaGlowEffect effect = new TileLavaGlowEffect(x,
								y, 1000 * 60 / bpm);
						tileEffectList.add(effect);
						t.setCurrentlyHot(true);
					}
				}

				int xPos = getScaledX(xPosition, x);
				int width = getScaledX(xPosition, x + 1) - xPos;
				drawTile(t, g, xPos, y * Constants.TILE_WIDTH, width,
						Constants.TILE_WIDTH);
			}
		}

		for (TileEffect t : tileEffectList) {
			if (t instanceof TileLavaGlowEffect)
				((TileLavaGlowEffect) t).render(g, xPosition);
		}
		setupLavaGlow = false;
		for (Projectile projectile : projectiles) {
			projectile.render(g);
		}
	}