R
redsting3d
Guest
For some reason my image flashes when i try to update a portion of the image in drawMiniMap(int x, int y), called from an outside source using imageUpdate(..). If anyone knows a way to make it so the entire image doesn't flash please let me know. It's probably a small error.
ps...view.maphash is an ArrayList<item> that stores all the data for the map and MiniMap.
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import java.awt.image.*;
public class MiniMap extends Applet implements MouseMotionListener, MouseListener {
public final int pixilSize = 1;
public static BufferedImage image;
public Graphics g;
public static JFrame x = new JFrame("Mini Map -- (0, 0)");
public int w;
public int h;
public View view;
private int mx;
private int my;
public MiniMap(int w, int h, View view) {
this.view = view;
this.w = w;
this.h = h;
x.setSize(300,300);
x.add(this, BorderLayout.CENTER);
x.setVisible(true);
addMouseMotionListener(this);
addMouseListener(this);
}
public void drawMiniMap(int x, int y) {
imageUpdate(createImage(w,h),SOMEBITS,x,y,x+pixilSize,y+pixilSize);
}
public void changeSize(int w, int h) {
this.w = w;
this.h = h;
repaint();
}
public void paint( Graphics g ) {
this.g = g;
if (view.maphash.size() > 0) {
Iterator toDraw = view.maphash.iterator();
int x = 0;
int y = 0;
while (toDraw.hasNext()) {
g.setColor(((item)toDraw.next()).getColor());
g.fillRect(((pixilSize*x)), ((pixilSize*y)), pixilSize, pixilSize);
x++;
if (x == view.width) {
x=0;
y++;
}
}
g.setColor(Color.BLACK);
g.drawLine(0, (h*pixilSize), (w*pixilSize), (h*pixilSize));
g.drawLine((w*pixilSize), (h*pixilSize), (w*pixilSize), 0);
g.setColor(Color.RED);
int x1 = view.viewX*pixilSize;
int y1 = view.viewY*pixilSize;
int x2 = x1+(view.viewW*pixilSize);
int y2 = y1+(view.viewH*pixilSize);
g.drawLine(x1, y1, x2, y1);
g.drawLine(x2, y1, x2, y2);
g.drawLine(x2, y2, x1, y2);
g.drawLine(x1, y2, x1, y1);
}
}
public void mouseDragged(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
mx = (int)e.getPoint().getX()/pixilSize;
my = (int)e.getPoint().getY()/pixilSize;
x.setTitle("Mini Map -- ("+ mx + ", " + my + ")");
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == 1) {
// X
if (mx+view.viewW-(view.viewW/2) <= w) {
view.viewX = mx-(view.viewW/2);
} else if (mx > w) {
do {
view.addWidthRight();
} while(view.width < mx);
view.viewX = view.width-view.viewW;
} else {
view.viewX = w-view.viewW;
}
// Y
if (my+view.viewH-(view.viewH/2) <= h) {
view.viewY = my-(view.viewH/2);
} else if (my > h) {
do {
view.addHeightDown();
} while(view.height < my);
view.viewY = view.height-view.viewH;
} else {
view.viewY = h-view.viewH;
}
if (view.viewX < 0)
view.viewX = 0;
if (view.viewY < 0)
view.viewY = 0;
view.refreshGrid();
}
}
}
ps...view.maphash is an ArrayList<item> that stores all the data for the map and MiniMap.
//////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.applet.*;
import java.awt.image.*;
public class MiniMap extends Applet implements MouseMotionListener, MouseListener {
public final int pixilSize = 1;
public static BufferedImage image;
public Graphics g;
public static JFrame x = new JFrame("Mini Map -- (0, 0)");
public int w;
public int h;
public View view;
private int mx;
private int my;
public MiniMap(int w, int h, View view) {
this.view = view;
this.w = w;
this.h = h;
x.setSize(300,300);
x.add(this, BorderLayout.CENTER);
x.setVisible(true);
addMouseMotionListener(this);
addMouseListener(this);
}
public void drawMiniMap(int x, int y) {
imageUpdate(createImage(w,h),SOMEBITS,x,y,x+pixilSize,y+pixilSize);
}
public void changeSize(int w, int h) {
this.w = w;
this.h = h;
repaint();
}
public void paint( Graphics g ) {
this.g = g;
if (view.maphash.size() > 0) {
Iterator toDraw = view.maphash.iterator();
int x = 0;
int y = 0;
while (toDraw.hasNext()) {
g.setColor(((item)toDraw.next()).getColor());
g.fillRect(((pixilSize*x)), ((pixilSize*y)), pixilSize, pixilSize);
x++;
if (x == view.width) {
x=0;
y++;
}
}
g.setColor(Color.BLACK);
g.drawLine(0, (h*pixilSize), (w*pixilSize), (h*pixilSize));
g.drawLine((w*pixilSize), (h*pixilSize), (w*pixilSize), 0);
g.setColor(Color.RED);
int x1 = view.viewX*pixilSize;
int y1 = view.viewY*pixilSize;
int x2 = x1+(view.viewW*pixilSize);
int y2 = y1+(view.viewH*pixilSize);
g.drawLine(x1, y1, x2, y1);
g.drawLine(x2, y1, x2, y2);
g.drawLine(x2, y2, x1, y2);
g.drawLine(x1, y2, x1, y1);
}
}
public void mouseDragged(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
mx = (int)e.getPoint().getX()/pixilSize;
my = (int)e.getPoint().getY()/pixilSize;
x.setTitle("Mini Map -- ("+ mx + ", " + my + ")");
}
public void mousePressed(MouseEvent e) {
if (e.getButton() == 1) {
// X
if (mx+view.viewW-(view.viewW/2) <= w) {
view.viewX = mx-(view.viewW/2);
} else if (mx > w) {
do {
view.addWidthRight();
} while(view.width < mx);
view.viewX = view.width-view.viewW;
} else {
view.viewX = w-view.viewW;
}
// Y
if (my+view.viewH-(view.viewH/2) <= h) {
view.viewY = my-(view.viewH/2);
} else if (my > h) {
do {
view.addHeightDown();
} while(view.height < my);
view.viewY = view.height-view.viewH;
} else {
view.viewY = h-view.viewH;
}
if (view.viewX < 0)
view.viewX = 0;
if (view.viewY < 0)
view.viewY = 0;
view.refreshGrid();
}
}
}