Browse Source

Added add facilities bar. Still has placement bug due to current mouseDragged() implementation

DaveyMathijssen 10 years ago
parent
commit
5a6e5be235

+ 1 - 0
.classpath

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="res"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+/bin/

BIN
res/simulator/plee.jpg


+ 1 - 1
src/gui/simulator/Draw.java

@@ -17,7 +17,7 @@ public abstract class Draw {
 
     public Draw(String image, int x, int y, double scale, double distanceToOtherObjects){
         try{
-            System.out.println(getClass().getResource(image));
+            //System.out.println(getClass().getResource(image));
             this.image = ImageIO.read(getClass().getResource(image));
         }catch(IOException ex){
             ex.printStackTrace();

+ 45 - 6
src/gui/simulator/Terrain.java

@@ -1,8 +1,10 @@
 package gui.simulator;
 
-import gui.simulator.facilities.Stage;
+import gui.simulator.facilities.*;
 
+import java.awt.BasicStroke;
 import java.awt.Color;
+import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Point;
@@ -13,12 +15,14 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseWheelEvent;
 import java.awt.geom.AffineTransform;
+import java.awt.geom.Ellipse2D;
 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;
 
@@ -44,10 +48,12 @@ public class Terrain extends JPanel {
 	Point lastMousePosition;
 
     public Terrain(int length, int width, int terrain){
+    	//get values
     	this.length = length;
     	this.width = width;
     	this.terrain = terrain;
     	
+    	//set terrainbackground
     	switch(terrain){
     	case 1: 
     		try {
@@ -72,7 +78,6 @@ public class Terrain extends JPanel {
     		break;
     	}
     	
-    	
         this.dragObject = null;
         this.entities = new LinkedList();
         this.initEntities();
@@ -83,7 +88,19 @@ public class Terrain extends JPanel {
         addMouseListener(new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
+            	Point2D clickPoint = getClickPoint(e.getPoint());
                 boolean newObject = false;
+                if(e.getX() < 200)
+				{
+					if(e.getY() < 300){
+						dragObject = new Stage((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+						offset = new Point2D.Double(e.getX() - dragObject.getX(), e.getY() - dragObject.getY());
+					}else if(e.getY() > 300 && e.getY() < 600){
+						dragObject = new RestRoom((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
+						offset = new Point2D.Double(e.getX() - dragObject.getX(), e.getY() - dragObject.getY());
+					}
+					entities.add(dragObject);
+				}
                 for(Draw drawObject: entities){
                     if(drawObject.contains(e.getPoint())){
                         dragObject = drawObject;
@@ -138,6 +155,8 @@ public class Terrain extends JPanel {
                         double scale = object.getScale();
                         scale *= 1 + (e.getPreciseWheelRotation() / 10);
                         object.setScale(scale);
+                    }else{
+                    	cameraScale *= 1 - (e.getPreciseWheelRotation()/10.0);
                     }
                 }
                 repaint();
@@ -147,8 +166,8 @@ public class Terrain extends JPanel {
     }
 
     private void initEntities(){
-        this.entities.add(new Stage(10, 10, 0.5, 10));
-        this.entities.add(new Stage(200, 40, 2, 10));
+        this.entities.add(new Stage(300, 10, 0.5, 10));
+        this.entities.add(new Stage(400, 40, 2, 10));
     }
 
     @Override
@@ -156,12 +175,31 @@ public class Terrain extends JPanel {
         super.paint(g);
         Graphics2D g2 = (Graphics2D) g;
         
+        //draw sidebar
+        g2.setClip(new Rectangle2D.Double(0,0, 200, getHeight()));
+        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 place", 30, 25);
+        g2.setColor(Color.BLACK);
+        g2.setStroke(new BasicStroke(5));
+        g2.drawLine(199, 0, 199, getHeight());
+        	//draw objects
+        Draw object1 = new Stage(0,50);
+        object1.draw(g2);
+        g2.drawString("stage", 80, 275);
+        Draw object2 = new RestRoom(0,300, 0.5, 10);
+        object2.draw(g2);
+        g2.drawString("toilettage", 70, 525);
+		
+		//draw simulation field
+		g2.setClip(new Rectangle2D.Double(200, 0, getWidth()-200, getHeight()));
         TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 500, 500));
 		g2.setPaint(p);
 		g2.fill(new Rectangle2D.Double(0,0,width,length));
-
         for(Draw drawObject: entities){
-            drawObject.draw(g2);
+            drawObject.draw(g2); 
         }
 
         if(this.selectedObject != null){
@@ -192,6 +230,7 @@ public class Terrain extends JPanel {
             }
 
             g2.fill(this.drawDragRectangle(this.selectedObject));
+            g2.setClip(null);
         }
     }
 

+ 22 - 1
src/gui/simulator/facilities/RestRoom.java

@@ -1,5 +1,26 @@
 package gui.simulator.facilities;
 
-public class RestRoom {
+import gui.simulator.Draw;
 
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+
+public class RestRoom extends Draw{
+
+	private static String imageLocation = "/simulator/plee.jpg";
+	private static String facilityName = "Plee";
+
+    public RestRoom(int x, int y) {
+        super(imageLocation, x, y, 1, 0);
+    }
+
+    public RestRoom(int x, int y, double scale, double distance) {
+        super(imageLocation, x, y, scale, distance);
+    }
+    
+    public String getFacilityName(){
+    	return facilityName;
+    }
 }

+ 10 - 3
src/gui/simulator/facilities/Stage.java

@@ -7,13 +7,20 @@ import java.awt.*;
 import java.io.File;
 import java.io.IOException;
 
-public class Stage extends Draw {
+public class Stage extends Draw{
+
+	private static String imageLocation = "/simulator/tent.png";
+	private static String facilityName = "Stage";
 
     public Stage(int x, int y) {
-        super("/simulator/tent.png", x, y, 1, 0);
+        super(imageLocation, x, y, 1, 0);
     }
 
     public Stage(int x, int y, double scale, double distance) {
-        super("/simulator/tent.png", x, y, scale, distance);
+        super(imageLocation, x, y, scale, distance);
+    }
+    
+    public String getFacilityName(){
+    	return facilityName;
     }
 }