浏览代码

Fixed my fuckup

Jeroen 10 年之前
父节点
当前提交
3552e51d96
共有 3 个文件被更改,包括 272 次插入302 次删除
  1. 11 18
      src/gui/simulator/DrawEngine.java
  2. 17 7
      src/gui/simulator/Sidebar.java
  3. 244 277
      src/gui/simulator/Terrain.java

+ 11 - 18
src/gui/simulator/DrawEngine.java

@@ -1,7 +1,5 @@
 package gui.simulator;
 
-import gui.simulator.Images.ImageType;
-
 import javax.imageio.ImageIO;
 
 import java.awt.*;
@@ -16,18 +14,13 @@ import java.io.IOException;
  */
 public abstract class DrawEngine {
 
-    private ImageType image_;
+    private Images.ImageType image;
     private double x, y, rotation, scale;
     private double distanceToOtherObjects;
     public SimulatorPane.Objects type;
 
-    public DrawEngine(ImageType images, int x, int y, double scale, double distanceToOtherObjects, SimulatorPane.Objects objecttype){
-//        try{
-//            this.image = ImageIO.read(getClass().getResource(images));
-//        }catch(IOException ex){
-//            ex.printStackTrace();
-//        }
-    	this.image_ = images;
+    public DrawEngine(Images.ImageType image, int x, int y, double scale, double distanceToOtherObjects, SimulatorPane.Objects objecttype){
+        this.image = image;
         this.type = objecttype;
         this.x = x;
         this.y = y;
@@ -39,25 +32,25 @@ public abstract class DrawEngine {
         AffineTransform transform = new AffineTransform();
         transform.translate(this.x, this.y);
         transform.scale(this.scale, this.scale);
-        transform.rotate(Math.toRadians(this.rotation), Images.getImage(image_).getWidth(null) /2 , Images.getImage(image_).getHeight(null) / 2);
+        transform.rotate(Math.toRadians(this.rotation), Images.getImage(image).getWidth(null) /2 , Images.getImage(image).getHeight(null) / 2);
         return transform;
     }
 
     public void draw(Graphics2D g){
-        g.drawImage(Images.getImage(image_), this.getAffineTransform(), null);
+        g.drawImage(Images.getImage(image), this.getAffineTransform(), null);
     }
 
     public boolean contains(Point2D point){
-        Shape shape = new Rectangle2D.Double(0, 0, Images.getImage(image_).getWidth(null), Images.getImage(image_).getHeight(null));
+        Shape shape = new Rectangle2D.Double(0, 0, Images.getImage(image).getWidth(null),Images.getImage(image).getHeight(null));
         return this.getAffineTransform().createTransformedShape(shape).contains(point);
     }
     
     public Image getImage(){
-    	return Images.getImage(image_);
+    	return Images.getImage(image);
     }
 
     public Point2D.Double getCenter(){
-        Point2D.Double center = new Point2D.Double(x + Images.getImage(image_).getWidth(null)*scale / 2, y + Images.getImage(image_).getHeight(null)*scale/2);
+        Point2D.Double center = new Point2D.Double(x + Images.getImage(image).getWidth(null)*scale / 2, y + Images.getImage(image).getHeight(null)*scale/2);
         return center;
     }
 
@@ -91,11 +84,11 @@ public abstract class DrawEngine {
     }
 
     public int getWidth(){
-        return Images.getImage(image_).getWidth(null);
+        return Images.getImage(image).getWidth(null);
     }
 
     public int getHeight(){
-        return Images.getImage(image_).getHeight(null);
+        return Images.getImage(image).getHeight(null);
     }
     
     public double getRotation() {
@@ -107,7 +100,7 @@ public abstract class DrawEngine {
     }
 
     public Rectangle2D.Double getRect(){
-        return new Rectangle2D.Double(-distanceToOtherObjects, - distanceToOtherObjects, Images.getImage(image_).getWidth(null)  + 2* distanceToOtherObjects, Images.getImage(image_).getHeight(null) + 2*distanceToOtherObjects);
+        return new Rectangle2D.Double(-distanceToOtherObjects, - distanceToOtherObjects, Images.getImage(image).getWidth(null)  + 2* distanceToOtherObjects, Images.getImage(image).getHeight(null) + 2*distanceToOtherObjects);
     }
 
 

+ 17 - 7
src/gui/simulator/Sidebar.java

@@ -12,16 +12,16 @@ import java.awt.event.MouseEvent;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
 import java.io.Serializable;
-import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 
-public class Sidebar implements Serializable {
+public class Sidebar implements Serializable  {
 	private int sideBarWidth;
 	private int sideBarHeight;
 	private Terrain terrain;
-	private HashMap<String, DrawEngine> drawableStages = new HashMap<String, DrawEngine>();
-	private HashMap<String, DrawEngine> drawableFacilities = new HashMap<String, DrawEngine>();
-	private HashMap<String, DrawEngine> drawablePaths = new HashMap<String, DrawEngine>();
+	private LinkedHashMap<String, DrawEngine> drawableStages = new LinkedHashMap<String, DrawEngine>();
+	private LinkedHashMap<String, DrawEngine> drawableFacilities = new LinkedHashMap<String, DrawEngine>();
+	private LinkedHashMap<String, DrawEngine> drawablePaths = new LinkedHashMap<String, DrawEngine>();
 	public enum SideBarTab{STAGES, FACILITIES, PATHS}
 	private SideBarTab currentTab = SideBarTab.STAGES;
 	private int tabWidth, tab1X, tab2X, tab3X;
@@ -49,6 +49,16 @@ public class Sidebar implements Serializable {
 	public void loadDrawableObjects(){
 		//stages
 		drawableStages.put("Stage1",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage2",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage3",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage4",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage5",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage6",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage7",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage8",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage9",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage10",new SimulatorStage(0, 62, 0.26, 1));
+		drawableStages.put("Stage11",new SimulatorStage(0, 62, 0.26, 1));
 		
 		//facilities
 		drawableFacilities.put("Toilet",new RestRoom(60, 275, 1 , 1));
@@ -104,9 +114,9 @@ public class Sidebar implements Serializable {
 				object.getValue().draw(g2);
 				g2.drawString(object.getKey(), objectPlacementX, objectPlacementY + 95);
 				g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
-				objectPlacementX += 100;
+				objectPlacementY += 100;
 				//switch to column2 if colum1 is filled
-				if(objectPlacementX > sideBarHeight)
+				if(objectPlacementY > sideBarHeight)
 					objectPlacementY += sideBarWidth/2;
 	            //System.out.println(object.getKey() +" :: "+ object.getValue());
 			}

+ 244 - 277
src/gui/simulator/Terrain.java

@@ -1,21 +1,12 @@
 package gui.simulator;
 
+import agenda.Agenda;
 import gui.simulator.Images.ImageType;
 import gui.simulator.facilities.RestRoom;
 import gui.simulator.facilities.SimulatorStage;
 import gui.simulator.facilities.SnackBar;
 
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.TexturePaint;
-import java.awt.Toolkit;
+import java.awt.*;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseMotionAdapter;
@@ -26,39 +17,39 @@ import java.awt.geom.Area;
 import java.awt.geom.NoninvertibleTransformException;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 
-import javax.swing.JDialog;
-import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
-
-import agenda.Agenda;
+import javax.imageio.ImageIO;
+import javax.swing.*;
 
 public class Terrain extends JPanel {
 
-	private List<DrawEngine> entities;
-	private Point2D oldPosition;
+    private List<DrawEngine> entities;
+    private Point2D oldPosition;
 	private double oldRotation, oldScale;
-	private DrawEngine dragObject, selectedObject;
-	private ImageType background;
-	private Sidebar sidebar;
-
-	private int festivalheight, festivalwidth;
-	private int sideBarWidth = 200;
-
-	private int pathgenerate = 1;
-	private WalkingPath currentpath;
-
-	private SimulatorPane.Terrains terrain;
-	Point2D cameraPoint = new Point2D.Double(festivalwidth/2,festivalheight/2);
+    private DrawEngine dragObject, selectedObject;
+    private ImageType background;
+    private Sidebar sidebar;
+    
+    private int festivalheight, festivalwidth;
+    private int sideBarWidth = 200;
+    
+    private int pathgenerate = 1;
+    private WalkingPath currentpath;
+    
+    private SimulatorPane.Terrains terrain;
+    Point2D cameraPoint = new Point2D.Double(festivalwidth/2,festivalheight/2);
 	float cameraScale = 1;
 	private boolean grid;
 	private ArrayList<Visitor> visitors;
 	private ArrayList<WalkingPath> paths;
 	Cursor rotate, pathpoint;
-
+	
 	Point2D lastClickPosition;
 	Point lastMousePosition;
 	Point2D lastMovedMousePosition;
@@ -66,21 +57,21 @@ public class Terrain extends JPanel {
 
 	private Agenda agenda;
 
-	public Terrain(int length, int width, SimulatorPane.Terrains terrain, Agenda agenda){
-		//get values
-		setFestivalHeight(length);
-		setFestivalWidth(width);
-		grid = true;
-		this.terrain = terrain;
-		visitors = new ArrayList<Visitor>();
-		paths = new ArrayList<WalkingPath>();
-
-		createCustomCursors();
-		//initialize sidebar
-		sidebar = new Sidebar(sideBarWidth, 3000, this);
-
-		//set terrainbackground
-		switch(terrain){
+    public Terrain(int length, int width, SimulatorPane.Terrains terrain, Agenda agenda){
+    	//get values
+    	setFestivalHeight(length);
+    	setFestivalWidth(width);
+    	grid = true;
+    	this.terrain = terrain;
+    	visitors = new ArrayList<Visitor>();
+    	paths = new ArrayList<WalkingPath>();
+
+    	createCustomCursors();
+    	//initialize sidebar
+    	sidebar = new Sidebar(sideBarWidth, 3000, this);
+
+    	//set terrainbackground
+    	switch(terrain){
 		case BEACH: 
 			background = Images.ImageType.Sand;
 			break;
@@ -91,42 +82,16 @@ public class Terrain extends JPanel {
 			background = Images.ImageType.Street;
 			break;
 		}
-
-		this.dragObject = null;
-		this.entities = new LinkedList();
-		this.initEntities();
-		this.listeners();
+    	
+        this.dragObject = null;
+        this.entities = new LinkedList();
+        this.initEntities();
+        this.listeners();
 
 		//agenda
 		this.agenda = agenda;
-	}
-
-    private void getFacility(MouseEvent e){
-    	Point2D clickPoint = getClickPoint(e.getPoint());
-    	DrawEngine dragObject = null;
-    	if(e.getX() < sideBarWidth)
-		{
-    		if(e.getY() > 100 && e.getY() < 260){
-				dragObject = new SimulatorStage((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
-				setDragObject(dragObject);
-			}else if(e.getY() >= 260 && e.getY() < 425){
-				dragObject = new RestRoom((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
-				setDragObject(dragObject);
-			}else if(e.getY() >= 430 && e.getY() < 510){
-				dragObject = new AccessPoint(this, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
-				setDragObject(dragObject);
-			}
-			else if(e.getY() >= 510 && e.getY() < 610){
-				dragObject = new ExitPoint(this, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
-				setDragObject(dragObject);
-			}
-			else if(e.getY() > 610 && e.getY() < getFestivalHeight()){
-				dragObject = new SnackBar((int)clickPoint.getX(),(int)clickPoint.getY(), 0.3, 10);
-				setDragObject(dragObject);
-			}
-			entities.add(dragObject);
-		}
     }
+
     private void listeners(){
         addMouseListener(new MouseAdapter() {
             @Override
@@ -135,7 +100,7 @@ public class Terrain extends JPanel {
 				lastClickPosition = clickPoint;
 				lastMousePosition = e.getPoint();
                 //if selected in sidebar
-				getFacility(e);
+				sidebar.getFacility(e);
                 //else selected in terrain
                 if(e.getX() > sideBarWidth){
 	                for(DrawEngine drawObject: entities){
@@ -183,111 +148,113 @@ public class Terrain extends JPanel {
 									dialog.pack();
 									dialog.setVisible(true);
 								}
-								return;
-							}
-						}
-					}
-					if(pathgenerate > 1){
-						currentpath.addPoint(new Point((int)getClickPoint(e.getPoint()).getX(), (int)getClickPoint(e.getPoint()).getY()));
-					}
-				}
-				repaint();
-			}
+	                    		return;
+	                    	}
+	                    }
+	                }
+	                if(pathgenerate > 1){
+                		currentpath.addPoint(new Point((int)getClickPoint(e.getPoint()).getX(), (int)getClickPoint(e.getPoint()).getY()));
+	                }
+                }
+                repaint();
+            }
 
-			@Override
-			public void mouseReleased(MouseEvent e) {
-				if(selectedObject != null){
-					for(DrawEngine drawObject: entities){
-						if(drawObject == selectedObject){
-							continue;
-						}
-						if(intersection(selectedObject, drawObject)){
-							//move back
-							selectedObject.setX(oldPosition.getX());
-							selectedObject.setY(oldPosition.getY());
+            @Override
+            public void mouseReleased(MouseEvent e) {
+                if(selectedObject != null){
+                    for(DrawEngine drawObject: entities){
+                        if(drawObject == selectedObject){
+                            continue;
+                        }
+                        if(intersection(selectedObject, drawObject)){
+                            //move back
+                            selectedObject.setX(oldPosition.getX());
+                            selectedObject.setY(oldPosition.getY());
 							selectedObject.setRotation(oldRotation);
 							selectedObject.setScale(oldScale);
-						}
-					}
-				}
-				setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
-				selectedObject = null;
-				dragObject = null;
-				repaint();
-			}
-		});
-
-		addMouseMotionListener(new MouseMotionAdapter() {
-			public void mouseMoved(MouseEvent e){
-				lastMovedMousePosition = getClickPoint(e.getPoint());
-				if(pathgenerate >0){
-					setCursor(pathpoint);
-				}else{
-					for(DrawEngine drawObject: entities){
-						if(drawObject.contains(lastMovedMousePosition)){
-							setCursor(new Cursor(Cursor.HAND_CURSOR));
-							return;
-						}
-					}
-					setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
-				}
-			}
-			@Override
-			public void mouseDragged(MouseEvent e) {
-				Point2D clickPoint = getClickPoint(e.getPoint());
-				if(dragObject != null){
-					if(SwingUtilities.isLeftMouseButton(e) && dragObject instanceof AccessPoint){          		
-						dragObject.setX(-25);
-						dragObject.setRotation(90);
-						if(dragObject.getY()<80){
-							dragObject.setY(80);
-						} else if(dragObject.getY()>getFestivalHeight()-150){
-							dragObject.setY(getFestivalHeight()-150);
-						} else {
-							dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));    
-						}       		
-					}else if(SwingUtilities.isLeftMouseButton(e) && dragObject instanceof ExitPoint){
-						dragObject.setX(getFestivalWidth()-200);
-						dragObject.setRotation(90);
-
-						if(dragObject.getY()<80){
-							dragObject.setY(80);
-						} else if(dragObject.getY()>getFestivalHeight()-150){
-							dragObject.setY(getFestivalHeight()-150);
-						} else {
-							dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));    
-						}
-
-					}else if(SwingUtilities.isLeftMouseButton(e)){
-						setCursor(new Cursor(Cursor.MOVE_CURSOR));
-						dragObject.setX(dragObject.getX() - (lastClickPosition.getX() - clickPoint.getX()));
-						dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));
-					}else if(SwingUtilities.isRightMouseButton(e)){
-						setCursor(rotate);
-						dragObject.setRotation(dragObject.getRotation() + (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY()));
-					}
-				}
-				else
+                        }
+                    }
+                }
+                setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+                selectedObject = null;
+                dragObject = null;
+                repaint();
+            }
+        });
+
+        addMouseMotionListener(new MouseMotionAdapter() {
+        	public void mouseMoved(MouseEvent e){
+        		lastMovedMousePosition = getClickPoint(e.getPoint());
+        		if(e.getX() < sidebar.getSideBarWidth()){
+        			setCursor(new Cursor(Cursor.HAND_CURSOR));
+        		}else if(pathgenerate >0){
+        			setCursor(pathpoint);
+        		}else{
+        			  for(DrawEngine drawObject: entities){
+  	                    if(drawObject.contains(lastMovedMousePosition)){
+  	                    	setCursor(new Cursor(Cursor.HAND_CURSOR));
+  	                    	return;
+  	                    }
+        			  }
+              		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
+        		}
+        	}
+            @Override
+            public void mouseDragged(MouseEvent e) {
+            	Point2D clickPoint = getClickPoint(e.getPoint());
+                if(dragObject != null){
+                	if(SwingUtilities.isLeftMouseButton(e) && dragObject instanceof AccessPoint){          		
+                		dragObject.setX(-25);
+                		dragObject.setRotation(90);
+                		if(dragObject.getY()<80){
+                		dragObject.setY(80);
+                		} else if(dragObject.getY()>getFestivalHeight()-150){
+                		dragObject.setY(getFestivalHeight()-150);
+                		} else {
+                		dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));    
+                		}       		
+                	}else if(SwingUtilities.isLeftMouseButton(e) && dragObject instanceof ExitPoint){
+                		dragObject.setX(getFestivalWidth()-200);
+                		dragObject.setRotation(90);
+                		
+                		if(dragObject.getY()<80){
+                    		dragObject.setY(80);
+                    		} else if(dragObject.getY()>getFestivalHeight()-150){
+                    		dragObject.setY(getFestivalHeight()-150);
+                    		} else {
+                    		dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));    
+                    		}
+                		
+                	}else if(SwingUtilities.isLeftMouseButton(e)){
+                    		setCursor(new Cursor(Cursor.MOVE_CURSOR));
+                    		dragObject.setX(dragObject.getX() - (lastClickPosition.getX() - clickPoint.getX()));
+                    		dragObject.setY(dragObject.getY() - (lastClickPosition.getY() - clickPoint.getY()));
+                    }else if(SwingUtilities.isRightMouseButton(e)){
+                		setCursor(rotate);
+                    	dragObject.setRotation(dragObject.getRotation() + (lastClickPosition.getX() - clickPoint.getX() + lastClickPosition.getY() - clickPoint.getY()));
+                    }
+                }
+                else
 				{
-					setCursor(new Cursor(Cursor.MOVE_CURSOR));
+                	setCursor(new Cursor(Cursor.MOVE_CURSOR));
 					cameraPoint = new Point2D.Double(
 							cameraPoint.getX() + (lastMousePosition.getX() - e.getX()),
 							cameraPoint.getY() + (lastMousePosition.getY() - e.getY())
 							);
 				}
-				repaint();
+                repaint();
 				lastMousePosition = e.getPoint();
 				lastClickPosition = clickPoint;
-			}
-		});
-
-		addMouseWheelListener(new MouseWheelListener() {
-			@Override
-			public void mouseWheelMoved(MouseWheelEvent e) {
-				Point2D clickPoint = getClickPoint(e.getPoint());
-				for(DrawEngine object: entities){
-					//if object selected, scale object
-					if(object.contains(clickPoint)){
+            }
+        });
+        
+        addMouseWheelListener(new MouseWheelListener() {
+            @Override
+            public void mouseWheelMoved(MouseWheelEvent e) {
+            	Point2D clickPoint = getClickPoint(e.getPoint());
+                for(DrawEngine object: entities){
+                	//if object selected, scale object
+                    if(object.contains(clickPoint)){
 						double oldscale  = object.getScale();
 						if(oldscale < 0.3){
 							if((e.getPreciseWheelRotation()/10.0) > 0){
@@ -308,36 +275,36 @@ public class Terrain extends JPanel {
 
 						repaint();
 						return;
-					}
-				}
-				//scale camera
-				cameraScale *= 1 - (e.getPreciseWheelRotation()/10.0);
-				repaint();
-			}
-		});
-	}
-
-	/*
-	 * Add facilities on initializing
-	 */
-	private void initEntities(){
-		//this.entities.add(new Stage(300, 10, 0.5, 10));
-		//this.entities.add(new Stage(400, 40, 2, 10));
-	}
+                    }
+                }
+                //scale camera
+            	cameraScale *= 1 - (e.getPreciseWheelRotation()/10.0);
+            	repaint();
+            }
+        });
+    }
 
-	@Override
-	public void paint(Graphics g) {
-		super.paint(g);
-		Graphics2D g2 = (Graphics2D) g;
-		sidebar.draw(g2);
+    /*
+     * Add facilities on initializing
+     */
+    private void initEntities(){
+        //this.entities.add(new Stage(300, 10, 0.5, 10));
+        //this.entities.add(new Stage(400, 40, 2, 10));
+    }
 
+    @Override
+    public void paint(Graphics g) {
+        super.paint(g);
+        Graphics2D g2 = (Graphics2D) g;
+        sidebar.draw(g2);
+        
 
 		//draw simulation field
 		g2.setClip(new Rectangle2D.Double(sideBarWidth, 0, getWidth()-sideBarWidth, getHeight()));
 		AffineTransform oldTransform = g2.getTransform();
 		g2.translate(sideBarWidth,0);
 		g2.setTransform(getCamera());
-		TexturePaint p = new TexturePaint(Images.getImage(background), new Rectangle2D.Double(0, 0, 200, 200));
+        TexturePaint p = new TexturePaint(Images.getImage(background), new Rectangle2D.Double(0, 0, 200, 200));
 		g2.setPaint(p);
 		g2.fill(new Rectangle2D.Double(0,0,festivalwidth,festivalheight));
 		if(grid){
@@ -359,57 +326,57 @@ public class Terrain extends JPanel {
 				path.paint(g2);
 			}
 		}
-		for(Visitor v:visitors){
-			v.paint(g2);
-		}
+    	for(Visitor v:visitors){
+    		v.paint(g2);
+    	}
 		for(DrawEngine drawObject: entities){
-			drawObject.draw(g2); 
-			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)));
-			}
-		}
+            drawObject.draw(g2); 
+            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)));
+            }
+        }
 
 		//draw collide boxes 
-		if(this.selectedObject != null){
-			Shape shape = this.selectedObject.getRect();
-			g2.setColor(Color.RED);
-			g2.draw(this.selectedObject.getAffineTransform().createTransformedShape(shape));
-
-			boolean collide = false;
-			for(DrawEngine drawEngine : entities){
-				if(!drawEngine.equals(this.selectedObject)){
-					if(intersection(this.selectedObject, drawEngine)){
-						collide = true;
-					}
-				}
-			}
-
-			if(collide){
-				g2.setColor(new Color(254, 0, 0, 128));
-			}else{
-				g2.setColor(new Color(0, 254, 0, 128));
-			}
-			g2.fill(this.selectedObject.getAffineTransform().createTransformedShape(this.selectedObject.getRect()));
-			g2.setClip(null);
-			g2.setTransform(oldTransform);
-		}
-	}
-
-	private Rectangle drawDragRectangle(DrawEngine shape){
-		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())));
-		return rectangle;
-	}
+        if(this.selectedObject != null){
+            Shape shape = this.selectedObject.getRect();
+            g2.setColor(Color.RED);
+            g2.draw(this.selectedObject.getAffineTransform().createTransformedShape(shape));
+
+            boolean collide = false;
+            for(DrawEngine drawEngine : entities){
+                if(!drawEngine.equals(this.selectedObject)){
+                    if(intersection(this.selectedObject, drawEngine)){
+                        collide = true;
+                    }
+                }
+            }
+
+            if(collide){
+                g2.setColor(new Color(254, 0, 0, 128));
+            }else{
+                g2.setColor(new Color(0, 254, 0, 128));
+            }
+            g2.fill(this.selectedObject.getAffineTransform().createTransformedShape(this.selectedObject.getRect()));
+            g2.setClip(null);
+            g2.setTransform(oldTransform);
+        }
+    }
 
-	private boolean intersection(DrawEngine d1, DrawEngine d2){
-		Area area = new Area(d1.getAffineTransform().createTransformedShape(d1.getRect()));
-		Area area2 = new Area(d2.getAffineTransform().createTransformedShape(d2.getRect()));
+    private Rectangle drawDragRectangle(DrawEngine shape){
+        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())));
+        return rectangle;
+    }
 
-		area.intersect(area2);
-		return !area.isEmpty();
-	}
+    private boolean intersection(DrawEngine d1, DrawEngine d2){
+        Area area = new Area(d1.getAffineTransform().createTransformedShape(d1.getRect()));
+        Area area2 = new Area(d2.getAffineTransform().createTransformedShape(d2.getRect()));
 
-	public Point2D getClickPoint(Point point) {
+        area.intersect(area2);
+        return !area.isEmpty();
+    }
+    
+    public Point2D getClickPoint(Point point) {
 		try {
 			return getCamera().inverseTransform(point, null);
 		} catch (NoninvertibleTransformException e1) {
@@ -417,8 +384,8 @@ public class Terrain extends JPanel {
 		}
 		return null;
 	}
-
-	private AffineTransform getCamera() {
+    
+    private AffineTransform getCamera() {
 		AffineTransform tx = new AffineTransform();
 		//start field in top left corner, next to sidebar
 		tx.translate(-cameraPoint.getX() + sideBarWidth, -cameraPoint.getY());
@@ -427,42 +394,42 @@ public class Terrain extends JPanel {
 		tx.scale(cameraScale, cameraScale);
 		return tx;
 	}
-	public void calculate(){
-		for(Visitor v:visitors){
-			v.update(visitors, entities);
-		}
-		for(WalkingPath p:paths){
-			p.reCalculate();
-		}
-	}
-
-	public void setFestivalHeight(int height){
-		this.festivalheight = height;
-	}
-	public void setFestivalWidth(int width){
-		this.festivalwidth = width;
-	}
-	public int getFestivalHeight(){
-		return festivalheight;
-	}
-	public int getFestivalWidth(){
-		return festivalwidth;
-	}
-
-	//getters and setters for sidebar
-	public void setDragObject(DrawEngine dragObject){
-		this.dragObject = dragObject;
-	}
-
-	public DrawEngine getDragObject(){
-		return dragObject;
-	}
-
-	public void addEntity(DrawEngine dragObject){
-		entities.add(dragObject);
-	}
+    public void calculate(){
+    	for(Visitor v:visitors){
+    		v.update(visitors, entities);
+    	}
+    	for(WalkingPath p:paths){
+    		p.reCalculate();
+    	}
+    }
 
-	public void createCustomCursors(){
+    public void setFestivalHeight(int height){
+    	this.festivalheight = height;
+    }
+    public void setFestivalWidth(int width){
+    	this.festivalwidth = width;
+    }
+    public int getFestivalHeight(){
+    	return festivalheight;
+    }
+    public int getFestivalWidth(){
+    	return festivalwidth;
+    }
+    
+    //getters and setters for sidebar
+    public void setDragObject(DrawEngine dragObject){
+    	this.dragObject = dragObject;
+    }
+    
+    public DrawEngine getDragObject(){
+    	return dragObject;
+    }
+    
+    public void addEntity(DrawEngine dragObject){
+    	entities.add(dragObject);
+    }
+    
+    public void createCustomCursors(){
 		Toolkit toolkit = Toolkit.getDefaultToolkit();  
 		Images.ImageType image;