SHOW:
|
|
- or go back to the newest paste.
1 | public class Screen { | |
2 | ||
3 | public int width, height; | |
4 | public int[] pixels; | |
5 | public final int MAP_SIZE = 64; | |
6 | public final int MAP_SIZE_MASK = MAP_SIZE - 1; | |
7 | public int xOffset, yOffset; | |
8 | public int[] tiles = new int[64 * 64]; | |
9 | private Random random = new Random(); | |
10 | ||
11 | public Screen(int width,int height) { | |
12 | this.width = width; | |
13 | this.height = height; | |
14 | pixels = new int[width * height]; // 50,400 | |
15 | ||
16 | for (int i =0; i < MAP_SIZE * MAP_SIZE; i++) { | |
17 | tiles[i] = random.nextInt(0xffffff); | |
18 | } | |
19 | } | |
20 | ||
21 | public void clear() { | |
22 | for(int i = 0; i < pixels.length; i++){ | |
23 | pixels[i] = 0; | |
24 | } | |
25 | } | |
26 | ||
27 | public void renderTile(int xp, int yp, Tile tile){ | |
28 | xp -= xOffset; | |
29 | yp -= yOffset; | |
30 | for (int y = 0; y < tile.sprite.SIZE; y++){ | |
31 | int ya = y + yp; | |
32 | for (int x = 0; x < tile.sprite.SIZE; x++){ | |
33 | int xa = x + xp; | |
34 | if(xa < -tile.sprite.SIZE || xa >= width || ya < 0 || ya >= height) break; | |
35 | if(xa < 0) xa = 0; | |
36 | if(ya < 0) ya = 0; | |
37 | pixels[xa + ya * width] = tile.sprite.pixels[x + y * tile.sprite.SIZE]; | |
38 | } | |
39 | } | |
40 | } | |
41 | ||
42 | public void setOffset(int xOffset, int yOffset) { | |
43 | this.xOffset = xOffset; | |
44 | this.yOffset = yOffset; | |
45 | } | |
46 | ||
47 | } |