public class Screen {
public int width, height;
public int[] pixels;
public final int MAP_SIZE = 64;
public final int MAP_SIZE_MASK = MAP_SIZE - 1;
public int xOffset, yOffset;
public int[] tiles = new int[64 * 64];
private Random random = new Random();
public Screen(int width,int height) {
this.width = width;
this.height = height;
pixels = new int[width * height]; // 50,400
for (int i =0; i < MAP_SIZE * MAP_SIZE; i++) {
tiles[i] = random.nextInt(0xffffff);
}
}
public void clear() {
for(int i = 0; i < pixels.length; i++){
pixels[i] = 0;
}
}
public void renderTile(int xp, int yp, Tile tile){
xp -= xOffset;
yp -= yOffset;
for (int y = 0; y < tile.sprite.SIZE; y++){
int ya = y + yp;
for (int x = 0; x < tile.sprite.SIZE; x++){
int xa = x + xp;
if(xa < -tile.sprite.SIZE || xa >= width || ya < 0 || ya >= height) break;
if(xa < 0) xa = 0;
if(ya < 0) ya = 0;
pixels[xa + ya * width] = tile.sprite.pixels[x + y * tile.sprite.SIZE];
}
}
}
public void setOffset(int xOffset, int yOffset) {
this.xOffset = xOffset;
this.yOffset = yOffset;
}
}