level.add(player);
}
public void render() {
BufferStrategy bs = getBufferStrategy();
if (bs == null) {
createBufferStrategy(3);
requestFocus();
return;
}
int xScroll = player.x - screen.w / 2;
int yScroll = player.y - (screen.h - 8) / 2;
if (xScroll < 16) xScroll = 16;
if (yScroll < 16) yScroll = 16;
if (xScroll > level.w * 16 - screen.w - 16) xScroll = level.w * 16 - screen.w - 16;
if (yScroll > level.h * 16 - screen.h - 16) yScroll = level.h * 16 - screen.h - 16;
if (currentLevel > 3) {
int col = Color.get(20, 20, 121, 121);
for (int y = 0; y < 14; y++)
for (int x = 0; x < 24; x++) {
screen.render(x * 8 - ((xScroll / 4) & 7), y * 8 - ((yScroll / 4) & 7), 0, col, 0);
}
}
level.renderBackground(screen, xScroll, yScroll);
level.renderSprites(screen, xScroll, yScroll);
if (currentLevel < 3) {
lightScreen.clear(0);
level.renderLight(lightScreen, xScroll, yScroll);
screen.overlay(lightScreen, xScroll, yScroll);
}
renderGui();
if (!hasFocus()) renderFocusNagger();
for (int y = 0; y < screen.h; y++) {
for (int x = 0; x < screen.w; x++) {
int cc = screen.pixels[x + y * screen.w];
if (cc < 255) pixels[x + y * WIDTH] = colors[cc];
}
}
Graphics g = bs.getDrawGraphics();
g.fillRect(0, 0, getWidth(), getHeight());
int ww = WIDTH * 3;
int hh = HEIGHT * 3;
int xo = (getWidth() - ww) / 2;
int yo = (getHeight() - hh) / 2;
g.drawImage(image, xo, yo, ww, hh, null);
g.dispose();
bs.show();
}