Jelajahi Sumber

Sidebar update with exitfacility

DaveyMathijssen 10 tahun lalu
induk
melakukan
512ddbf12d
2 mengubah file dengan 55 tambahan dan 12 penghapusan
  1. 34 5
      src/gui/simulator/Sidebar.java
  2. 21 7
      src/gui/simulator/Terrain.java

+ 34 - 5
src/gui/simulator/Sidebar.java

@@ -7,12 +7,16 @@ import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Font;
 import java.awt.Graphics2D;
+import java.awt.event.MouseEvent;
+import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
+import java.util.ArrayList;
 
 public class Sidebar {
 	private int sideBarWidth;
 	private int sideBarHeight;
 	private Terrain terrain;
+	private ArrayList<Draw> drawableFacilities = new ArrayList<Draw>();
 	
 	/*
 	 * Constructor for initializing all variables
@@ -23,23 +27,24 @@ public class Sidebar {
 		this.sideBarWidth = sideBarWidth;
 		this.sideBarHeight = screenHeight;
 		this.terrain = terrain;
-		
-		System.out.println(this.sideBarHeight); System.out.println(this.sideBarWidth); System.out.println(this.terrain);
 	}
 	
 	public void draw(Graphics2D g2){
-        //g2.drawImage(this.image, this.getAffineTransform(), null);
-		
-		//draw sidebar
+		//setclip
         g2.setClip(new Rectangle2D.Double(0,0, sideBarWidth, sideBarHeight));
+        
+        //header
         g2.setColor(Color.GRAY);
         g2.fill3DRect(0, 0, 200, 50, true);
         g2.setColor(Color.WHITE);
         g2.setFont(new Font("Serif", Font.BOLD, 20));
         g2.drawString("Drag and drop", 30, 25);
+        
+        //draw seperation line
         g2.setColor(Color.BLACK);
         g2.setStroke(new BasicStroke(5));
         g2.drawLine(199, 0, 199, sideBarHeight);
+        
         //draw objects
         Draw object1 = new Stage(0,50);
         object1.draw(g2);
@@ -55,6 +60,30 @@ public class Sidebar {
         g2.drawString("uitgang", 70, 800);
     }
 	
+    private void getFacility(MouseEvent e){
+    	Point2D clickPoint = terrain.getClickPoint(e.getPoint());
+    	Draw dragObject = null;
+    	if(e.getX() < sideBarWidth)
+		{
+			if(e.getY() < 300){
+				dragObject = new Stage((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+				terrain.setDragObject(dragObject);
+			}else if(e.getY() > 300 && e.getY() < 550){
+				dragObject = new RestRoom((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+				terrain.setDragObject(dragObject);
+			}else if(e.getY() > 550 && e.getY() < 800){
+				dragObject = new AccessPoint(terrain, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+				terrain.setDragObject(dragObject);
+			}
+			else if(e.getY() > 800){
+				dragObject = new ExitPoint(terrain, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+				terrain.setDragObject(dragObject);
+			}
+			if(dragObject != null)
+				terrain.addEntity(dragObject);
+		}
+    }
+	
 	public int getSideBarWidth(){
 		return sideBarWidth;
 	}

+ 21 - 7
src/gui/simulator/Terrain.java

@@ -52,7 +52,7 @@ public class Terrain extends JPanel {
     	grid = true;
     	this.terrain = terrain;
     	//initialize sidebar
-    	sidebar = new Sidebar(200, getFestivalHeight(), this);
+    	sidebar = new Sidebar(sideBarWidth, getFestivalHeight(), this);
     	//set terrainbackground
     	switch(terrain){
     	case BEACH: 
@@ -86,7 +86,7 @@ public class Terrain extends JPanel {
 
     private void getFacility(MouseEvent e){
     	Point2D clickPoint = getClickPoint(e.getPoint());
-    	if(e.getX() < 200)
+    	if(e.getX() < sideBarWidth)
 		{
 			if(e.getY() < 300){
 				dragObject = new Stage((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
@@ -95,12 +95,13 @@ public class Terrain extends JPanel {
 			}else if(e.getY() > 550 && e.getY() < 800){
 				dragObject = new AccessPoint(this, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
 			}
-			else if(e.getY() > 800 && e.getY() < 1100){
-				//dragObject = new custom facility
+			else if(e.getY() > 800){
+				dragObject = new ExitPoint(this, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
 			}
 			entities.add(dragObject);
 		}
     }
+    
     private void listeners(){
         addMouseListener(new MouseAdapter() {
             @Override
@@ -203,9 +204,9 @@ public class Terrain extends JPanel {
         
 
 		//draw simulation field
-		g2.setClip(new Rectangle2D.Double(200, 0, getWidth()-200, getHeight()));
+		g2.setClip(new Rectangle2D.Double(sideBarWidth, 0, getWidth()-sideBarWidth, getHeight()));
 		AffineTransform oldTransform = g2.getTransform();
-		g2.translate(200,0);
+		g2.translate(sideBarWidth,0);
 		g2.setTransform(getCamera());
         TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 200, 200));
 		g2.setPaint(p);
@@ -265,7 +266,7 @@ public class Terrain extends JPanel {
         return !area.isEmpty();
     }
     
-    private Point2D getClickPoint(Point point) {
+    public Point2D getClickPoint(Point point) {
 		try {
 			return getCamera().inverseTransform(point, null);
 		} catch (NoninvertibleTransformException e1) {
@@ -295,4 +296,17 @@ public class Terrain extends JPanel {
     public int getFestivalWidth(){
     	return festivalwidth;
     }
+    
+    //getters and setters for sidebar
+    public void setDragObject(Draw dragObject){
+    	this.dragObject = dragObject;
+    }
+    
+    public Draw getDragObject(){
+    	return dragObject;
+    }
+    
+    public void addEntity(Draw dragObject){
+    	entities.add(dragObject);
+    }
 }