Added rendering of path.

This commit is contained in:
t-moe
2016-06-16 23:53:06 +02:00
parent 8f5f5364c2
commit e2152cf6c2

View File

@@ -5,6 +5,7 @@ import java.awt.Graphics;
import java.awt.Point; import java.awt.Point;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.JPanel; import javax.swing.JPanel;
@@ -18,10 +19,11 @@ public class FieldCanvas extends JPanel{
private int size; private int size;
private Game game; private Game game;
private Point src; private Point src;
private Point dst;
private List<Point> path;
FieldCanvas(){ FieldCanvas(){
MouseAdapter ad = new MouseAdapter(){
addMouseListener(new MouseAdapter(){
@Override @Override
public void mousePressed(MouseEvent e) { public void mousePressed(MouseEvent e) {
super.mousePressed(e); super.mousePressed(e);
@@ -34,18 +36,38 @@ public class FieldCanvas extends JPanel{
} }
} }
@Override
public void mouseDragged(MouseEvent e) {
super.mouseDragged(e);
if(src!=null) {
Point lastDst = dst;
dst = FieldCanvas.this.getClickPoint(e.getPoint());
if(lastDst!=dst) { //hovered field changed
path= game.getPath(src, dst);
repaint();
}
} else {
dst = null;
path = null;
}
};
@Override @Override
public void mouseReleased(MouseEvent e) { public void mouseReleased(MouseEvent e) {
super.mouseReleased(e); super.mouseReleased(e);
Point p = FieldCanvas.this.getClickPoint(e.getPoint()); dst = FieldCanvas.this.getClickPoint(e.getPoint());
if(p != null && src!=null) { path = null;
System.out.println("Moving from "+src.toString()+ " to "+p.toString()); if(dst != null && src!=null) {
game.doMove(src, p); System.out.println("Moving from "+src.toString()+ " to "+dst.toString());
game.doMove(src, dst);
repaint(); repaint();
} }
src = null; src = null;
} }
}); };
addMouseListener(ad);
addMouseMotionListener(ad);
} }
@@ -97,6 +119,30 @@ public class FieldCanvas extends JPanel{
} }
} }
if(path!=null && src!=null && dst!=null) {
int colorCode = game.getField()[src.x][src.y];
Color c = colors[colorCode-1];
int sSpace = space/3;
int sSpace2 = space/5;
g.setColor(Color.lightGray);
g.fillRect(src.x*space+2, src.y*space+2, space -3, space -3);
g.fillRect(dst.x*space+2, dst.y*space+2, space -3, space -3);
g.setColor(c);
g.fillRect(src.x*space+2+sSpace2, src.y*space+2+sSpace2, space -3 - 2* sSpace2, space -3 - 2* sSpace2);
for(int i=1; i<path.size() -1; i++) {
Point p = path.get(i);
g.fillRect(p.x*space+2+sSpace, p.y*space+2+sSpace, space -3 - 2* sSpace, space -3 - 2* sSpace);
}
g.fillRect(dst.x*space+2+sSpace2, dst.y*space+2+sSpace2, space -3 - 2* sSpace2, space -3 - 2* sSpace2);
}
} }