1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
public Minimap(int x,int y,int width,int height,int mapwidth,int mapheight,int scale,JFrame window){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.mapwidth = mapwidth;
this.mapheight = mapheight;
this.scale = scale;
this.window = window;
mapData = ImageInput.getMapData(mapwidth,mapheight,"chapter1","Kachelebene 1");
minimap = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
pixels = new int[width*height];
for(int i = 0;i<mapwidth;i++){
for(int j = 0;j<mapheight;j++){
int tileNr = mapData[i][j];
tileNr--;
for(int m = 0;m<32;m++){
for(int n = 0;n<32;n++){
pixels[i+j*mapwidth]=ImageInput.getTileImage(tileNr).getRGB(m,n);
}
}
}
}
minimap.setRGB(0,0,mapwidth,mapheight,pixels,0,mapwidth);
}
public void render(Graphics g,int x,int y,int xoffset,int yoffset){
//Rechteck um die Minimap
Rectangle surround = new Rectangle(x,y,mapwidth*scale,mapheight*scale);
if(surround.contains(MouseInput.mousex,MouseInput.mousey)) {
//Berechnung der neuen Koordinaten
newx = (mapwidth-((window.getWidth()-MouseInput.mousex)/scale))*32;
newy = (mapheight-((window.getHeight()-MouseInput.mousey)/scale))*32;
xoffset = newx;
yoffset = newy;
}
//Das miwandernde rechteck
recx = x +(xoffset/32)*scale;
recy = y + (yoffset/32)*scale;
recwidth = ((window.getWidth()*mapwidth)/(mapwidth*32))*scale;
recheight = (((window.getHeight())*mapheight)/(mapheight*32))*scale;
Rectangle miniBox = new Rectangle(recx,recy,recwidth,recheight);
g.drawImage(minimap,x,y,width*scale,height*scale,null);
g.drawRect(miniBox.x,miniBox.y,miniBox.width,miniBox.height);
}
|