|
@@ -24,7 +24,6 @@ import java.awt.geom.Rectangle2D;
|
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.BufferedImage;
|
|
|
import java.io.File;
|
|
import java.io.File;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
-import java.nio.file.Path;
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.LinkedList;
|
|
import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -35,9 +34,10 @@ import javax.swing.SwingUtilities;
|
|
|
|
|
|
|
|
public class Terrain extends JPanel {
|
|
public class Terrain extends JPanel {
|
|
|
|
|
|
|
|
- private List<Draw> entities;
|
|
|
|
|
|
|
+ private List<DrawEngine> entities;
|
|
|
private Point2D oldPosition;
|
|
private Point2D oldPosition;
|
|
|
- private Draw dragObject, selectedObject;
|
|
|
|
|
|
|
+ private double oldRotation, oldScale;
|
|
|
|
|
+ private DrawEngine dragObject, selectedObject;
|
|
|
private BufferedImage background;
|
|
private BufferedImage background;
|
|
|
private Sidebar sidebar;
|
|
private Sidebar sidebar;
|
|
|
|
|
|
|
@@ -132,7 +132,7 @@ public class Terrain extends JPanel {
|
|
|
getFacility(e);
|
|
getFacility(e);
|
|
|
//else selected in terrain
|
|
//else selected in terrain
|
|
|
if(e.getX() > sideBarWidth){
|
|
if(e.getX() > sideBarWidth){
|
|
|
- for(Draw drawObject: entities){
|
|
|
|
|
|
|
+ for(DrawEngine drawObject: entities){
|
|
|
if(drawObject.contains(clickPoint)){
|
|
if(drawObject.contains(clickPoint)){
|
|
|
if(pathgenerate == 1){
|
|
if(pathgenerate == 1){
|
|
|
currentpath = new WalkingPath();
|
|
currentpath = new WalkingPath();
|
|
@@ -150,6 +150,8 @@ public class Terrain extends JPanel {
|
|
|
dragObject = drawObject;
|
|
dragObject = drawObject;
|
|
|
selectedObject = dragObject;
|
|
selectedObject = dragObject;
|
|
|
oldPosition = new Point2D.Double(selectedObject.getX(), selectedObject.getY());
|
|
oldPosition = new Point2D.Double(selectedObject.getX(), selectedObject.getY());
|
|
|
|
|
+ oldRotation = selectedObject.getScale();
|
|
|
|
|
+ oldScale = selectedObject.getScale();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -164,7 +166,7 @@ public class Terrain extends JPanel {
|
|
|
@Override
|
|
@Override
|
|
|
public void mouseReleased(MouseEvent e) {
|
|
public void mouseReleased(MouseEvent e) {
|
|
|
if(selectedObject != null){
|
|
if(selectedObject != null){
|
|
|
- for(Draw drawObject: entities){
|
|
|
|
|
|
|
+ for(DrawEngine drawObject: entities){
|
|
|
if(drawObject == selectedObject){
|
|
if(drawObject == selectedObject){
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
@@ -172,6 +174,8 @@ public class Terrain extends JPanel {
|
|
|
//move back
|
|
//move back
|
|
|
selectedObject.setX(oldPosition.getX());
|
|
selectedObject.setX(oldPosition.getX());
|
|
|
selectedObject.setY(oldPosition.getY());
|
|
selectedObject.setY(oldPosition.getY());
|
|
|
|
|
+ selectedObject.setRotation(oldRotation);
|
|
|
|
|
+ selectedObject.setScale(oldScale);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -193,7 +197,7 @@ public class Terrain extends JPanel {
|
|
|
dragObject.setX(dragObject.getX() - (lastClickPosition.getX() - clickPoint.getX()));
|
|
dragObject.setX(dragObject.getX() - (lastClickPosition.getX() - clickPoint.getX()));
|
|
|
dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));
|
|
dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));
|
|
|
}else if(SwingUtilities.isRightMouseButton(e)){
|
|
}else if(SwingUtilities.isRightMouseButton(e)){
|
|
|
- dragObject.rotation += (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY());
|
|
|
|
|
|
|
+ dragObject.setRotation(dragObject.getRotation() + (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY()));
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
@@ -213,10 +217,10 @@ public class Terrain extends JPanel {
|
|
|
@Override
|
|
@Override
|
|
|
public void mouseWheelMoved(MouseWheelEvent e) {
|
|
public void mouseWheelMoved(MouseWheelEvent e) {
|
|
|
Point2D clickPoint = getClickPoint(e.getPoint());
|
|
Point2D clickPoint = getClickPoint(e.getPoint());
|
|
|
- for(Draw object: entities){
|
|
|
|
|
|
|
+ for(DrawEngine object: entities){
|
|
|
//if object selected, scale object
|
|
//if object selected, scale object
|
|
|
if(object.contains(clickPoint)){
|
|
if(object.contains(clickPoint)){
|
|
|
- object.scale *= 1 + (e.getPreciseWheelRotation()/10.0);
|
|
|
|
|
|
|
+ object.setScale(object.getScale() * 1 + (e.getPreciseWheelRotation()/10.0));
|
|
|
repaint();
|
|
repaint();
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -265,7 +269,7 @@ public class Terrain extends JPanel {
|
|
|
for(Visitor v:visitors){
|
|
for(Visitor v:visitors){
|
|
|
v.paint(g2);
|
|
v.paint(g2);
|
|
|
}
|
|
}
|
|
|
- for(Draw drawObject: entities){
|
|
|
|
|
|
|
+ for(DrawEngine drawObject: entities){
|
|
|
drawObject.draw(g2);
|
|
drawObject.draw(g2);
|
|
|
if(pathgenerate > 0){
|
|
if(pathgenerate > 0){
|
|
|
g2.fill(drawObject.getAffineTransform().createTransformedShape(new Rectangle((int)(drawObject.getX()-(drawObject.getWidth()/2)-10),(int)(drawObject.getY()-(drawObject.getHeight()/2)-10), 20, 20)));
|
|
g2.fill(drawObject.getAffineTransform().createTransformedShape(new Rectangle((int)(drawObject.getX()-(drawObject.getWidth()/2)-10),(int)(drawObject.getY()-(drawObject.getHeight()/2)-10), 20, 20)));
|
|
@@ -289,9 +293,9 @@ public class Terrain extends JPanel {
|
|
|
g2.draw(this.selectedObject.getAffineTransform().createTransformedShape(shape));
|
|
g2.draw(this.selectedObject.getAffineTransform().createTransformedShape(shape));
|
|
|
|
|
|
|
|
boolean collide = false;
|
|
boolean collide = false;
|
|
|
- for(Draw draw: entities){
|
|
|
|
|
- if(!draw.equals(this.selectedObject)){
|
|
|
|
|
- if(intersection(this.selectedObject, draw)){
|
|
|
|
|
|
|
+ for(DrawEngine drawEngine : entities){
|
|
|
|
|
+ if(!drawEngine.equals(this.selectedObject)){
|
|
|
|
|
+ if(intersection(this.selectedObject, drawEngine)){
|
|
|
collide = true;
|
|
collide = true;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -308,13 +312,13 @@ public class Terrain extends JPanel {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private Rectangle drawDragRectangle(Draw shape){
|
|
|
|
|
|
|
+ private Rectangle drawDragRectangle(DrawEngine shape){
|
|
|
Rectangle rectangle = null;
|
|
Rectangle rectangle = null;
|
|
|
rectangle = new Rectangle((int) (shape.getX() - shape.getDistanceToOtherObjects()), (int) (shape.getY() - shape.getDistanceToOtherObjects()), (int) (shape.getWidth() * shape.getScale() + (2 * shape.getDistanceToOtherObjects())), (int) (shape.getHeight() * shape.getScale() + (2 * shape.getDistanceToOtherObjects())));
|
|
rectangle = new Rectangle((int) (shape.getX() - shape.getDistanceToOtherObjects()), (int) (shape.getY() - shape.getDistanceToOtherObjects()), (int) (shape.getWidth() * shape.getScale() + (2 * shape.getDistanceToOtherObjects())), (int) (shape.getHeight() * shape.getScale() + (2 * shape.getDistanceToOtherObjects())));
|
|
|
return rectangle;
|
|
return rectangle;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private boolean intersection(Draw d1, Draw d2){
|
|
|
|
|
|
|
+ private boolean intersection(DrawEngine d1, DrawEngine d2){
|
|
|
Area area = new Area(d1.getAffineTransform().createTransformedShape(d1.getRect()));
|
|
Area area = new Area(d1.getAffineTransform().createTransformedShape(d1.getRect()));
|
|
|
Area area2 = new Area(d2.getAffineTransform().createTransformedShape(d2.getRect()));
|
|
Area area2 = new Area(d2.getAffineTransform().createTransformedShape(d2.getRect()));
|
|
|
|
|
|
|
@@ -359,15 +363,15 @@ public class Terrain extends JPanel {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//getters and setters for sidebar
|
|
//getters and setters for sidebar
|
|
|
- public void setDragObject(Draw dragObject){
|
|
|
|
|
|
|
+ public void setDragObject(DrawEngine dragObject){
|
|
|
this.dragObject = dragObject;
|
|
this.dragObject = dragObject;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public Draw getDragObject(){
|
|
|
|
|
|
|
+ public DrawEngine getDragObject(){
|
|
|
return dragObject;
|
|
return dragObject;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public void addEntity(Draw dragObject){
|
|
|
|
|
|
|
+ public void addEntity(DrawEngine dragObject){
|
|
|
entities.add(dragObject);
|
|
entities.add(dragObject);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|