|
@@ -8,10 +8,14 @@ import java.awt.BasicStroke;
|
|
|
import java.awt.Color;
|
|
import java.awt.Color;
|
|
|
import java.awt.Font;
|
|
import java.awt.Font;
|
|
|
import java.awt.Graphics2D;
|
|
import java.awt.Graphics2D;
|
|
|
|
|
+import java.awt.Rectangle;
|
|
|
import java.awt.event.MouseEvent;
|
|
import java.awt.event.MouseEvent;
|
|
|
import java.awt.geom.Point2D;
|
|
import java.awt.geom.Point2D;
|
|
|
import java.awt.geom.Rectangle2D;
|
|
import java.awt.geom.Rectangle2D;
|
|
|
import java.io.Serializable;
|
|
import java.io.Serializable;
|
|
|
|
|
+import java.lang.reflect.Constructor;
|
|
|
|
|
+import java.lang.reflect.InvocationTargetException;
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
|
|
@@ -22,7 +26,18 @@ public class Sidebar implements Serializable {
|
|
|
private LinkedHashMap<String, DrawEngine> drawableStages = new LinkedHashMap<String, DrawEngine>();
|
|
private LinkedHashMap<String, DrawEngine> drawableStages = new LinkedHashMap<String, DrawEngine>();
|
|
|
private LinkedHashMap<String, DrawEngine> drawableFacilities = new LinkedHashMap<String, DrawEngine>();
|
|
private LinkedHashMap<String, DrawEngine> drawableFacilities = new LinkedHashMap<String, DrawEngine>();
|
|
|
private LinkedHashMap<String, DrawEngine> drawablePaths = new LinkedHashMap<String, DrawEngine>();
|
|
private LinkedHashMap<String, DrawEngine> drawablePaths = new LinkedHashMap<String, DrawEngine>();
|
|
|
- public enum SideBarTab{STAGES, FACILITIES, PATHS}
|
|
|
|
|
|
|
+ private ArrayList<LinkedHashMap<String, DrawEngine>> drawableArrays = new ArrayList<LinkedHashMap<String, DrawEngine>>();
|
|
|
|
|
+ public enum SideBarTab{
|
|
|
|
|
+ STAGES(0), FACILITIES(1), PATHS(2);
|
|
|
|
|
+
|
|
|
|
|
+ public final int value;
|
|
|
|
|
+ SideBarTab(int value){
|
|
|
|
|
+ this.value = value;
|
|
|
|
|
+ }
|
|
|
|
|
+ int getValue(){
|
|
|
|
|
+ return value;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
private SideBarTab currentTab = SideBarTab.STAGES;
|
|
private SideBarTab currentTab = SideBarTab.STAGES;
|
|
|
private int tabWidth, tab1X, tab2X, tab3X;
|
|
private int tabWidth, tab1X, tab2X, tab3X;
|
|
|
|
|
|
|
@@ -45,30 +60,35 @@ public class Sidebar implements Serializable {
|
|
|
/*
|
|
/*
|
|
|
* Add your new objects to this method. This method is run when the sidebar is drawn and will automatically align and place
|
|
* Add your new objects to this method. This method is run when the sidebar is drawn and will automatically align and place
|
|
|
* all inserted objects. Only thing YOU have to do is insert nice parameter values to the object instantiation.
|
|
* all inserted objects. Only thing YOU have to do is insert nice parameter values to the object instantiation.
|
|
|
|
|
+ *
|
|
|
|
|
+ * Important: only the scaling parameter matters, the x and y values will be overwritten by the system
|
|
|
*/
|
|
*/
|
|
|
public void loadDrawableObjects(){
|
|
public void loadDrawableObjects(){
|
|
|
//stages
|
|
//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));
|
|
|
|
|
|
|
+ drawableStages.put("Stage1",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage2",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage3",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage4",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage5",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage6",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage7",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage8",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage9",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage10",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
+ drawableStages.put("Stage11",new SimulatorStage(0, 0, 0.26, 1));
|
|
|
|
|
|
|
|
//facilities
|
|
//facilities
|
|
|
- drawableFacilities.put("Toilet",new RestRoom(60, 275, 1 , 1));
|
|
|
|
|
- drawableFacilities.put("Ingang",new AccessPoint(terrain, 0, 425, 0.5, 1));
|
|
|
|
|
- drawableFacilities.put("Uitgang",new ExitPoint(terrain, 0, 525, 0.5, 1));
|
|
|
|
|
- drawableFacilities.put("Snackbar",new SnackBar(0, 620, 0.5, 1));
|
|
|
|
|
|
|
+ drawableFacilities.put("Toilet",new RestRoom(0, 0, 0.8, 1));
|
|
|
|
|
+ drawableFacilities.put("Ingang",new AccessPoint(terrain, 0, 0, 0.26, 1));
|
|
|
|
|
+ drawableFacilities.put("Uitgang",new ExitPoint(terrain, 0, 0, 0.26, 1));
|
|
|
|
|
+ drawableFacilities.put("Snackbar",new SnackBar(0, 0, 0.2, 1));
|
|
|
|
|
|
|
|
//paths
|
|
//paths
|
|
|
//drawablePaths.add("My awesome path name", new AwesomePath());
|
|
//drawablePaths.add("My awesome path name", new AwesomePath());
|
|
|
|
|
|
|
|
|
|
+ drawableArrays.add(drawableStages);
|
|
|
|
|
+ drawableArrays.add(drawableFacilities);
|
|
|
|
|
+ drawableArrays.add(drawablePaths);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public void draw(Graphics2D g2){
|
|
public void draw(Graphics2D g2){
|
|
@@ -83,22 +103,22 @@ public class Sidebar implements Serializable {
|
|
|
g2.fill3DRect(tab2X, 30, tabWidth, 30, true);
|
|
g2.fill3DRect(tab2X, 30, tabWidth, 30, true);
|
|
|
g2.fill3DRect(tab3X, 30, tabWidth, 30, true);
|
|
g2.fill3DRect(tab3X, 30, tabWidth, 30, true);
|
|
|
g2.setColor(Color.WHITE);
|
|
g2.setColor(Color.WHITE);
|
|
|
- g2.setFont(new Font("Serif", Font.BOLD, 20));
|
|
|
|
|
|
|
+ g2.setFont(new Font("SansSerif", Font.BOLD, 20));
|
|
|
//g2.drawString(str, x, y);
|
|
//g2.drawString(str, x, y);
|
|
|
- g2.drawString("Drag and drop", 30, 25);
|
|
|
|
|
- g2.setFont(new Font("Serif", Font.BOLD, 16));
|
|
|
|
|
|
|
+ g2.drawString("Drag and drop", 30, 23);
|
|
|
|
|
+ g2.setFont(new Font("SansSerif", Font.PLAIN, 16));
|
|
|
g2.drawString("Stages", tab1X+10, 50);
|
|
g2.drawString("Stages", tab1X+10, 50);
|
|
|
g2.drawString("Facilities", tab2X+3, 50);
|
|
g2.drawString("Facilities", tab2X+3, 50);
|
|
|
g2.drawString("Paths", tab3X+15, 50);
|
|
g2.drawString("Paths", tab3X+15, 50);
|
|
|
switch (currentTab) {
|
|
switch (currentTab) {
|
|
|
case STAGES:
|
|
case STAGES:
|
|
|
- g2.drawLine(tab1X+10, 55, tab1X+55, 55);
|
|
|
|
|
|
|
+ g2.drawLine(tab1X+10, 55, tab1X+60, 55);
|
|
|
break;
|
|
break;
|
|
|
case FACILITIES:
|
|
case FACILITIES:
|
|
|
- g2.drawLine(tab2X+3, 55, tab2X+63, 55);
|
|
|
|
|
|
|
+ g2.drawLine(tab2X+3, 55, tab2X+64, 55);
|
|
|
break;
|
|
break;
|
|
|
case PATHS:
|
|
case PATHS:
|
|
|
- g2.drawLine(tab3X+15, 55, tab3X+50, 55);
|
|
|
|
|
|
|
+ g2.drawLine(tab3X+15, 55, tab3X+55, 55);
|
|
|
break;
|
|
break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
@@ -108,42 +128,19 @@ public class Sidebar implements Serializable {
|
|
|
g2.setColor(Color.BLACK);
|
|
g2.setColor(Color.BLACK);
|
|
|
int objectPlacementX = 0;
|
|
int objectPlacementX = 0;
|
|
|
int objectPlacementY = 61;
|
|
int objectPlacementY = 61;
|
|
|
- switch (currentTab) {
|
|
|
|
|
- case STAGES:
|
|
|
|
|
- for(HashMap.Entry<String, DrawEngine> object : drawableStages.entrySet()){
|
|
|
|
|
- object.getValue().draw(g2);
|
|
|
|
|
- g2.drawString(object.getKey(), objectPlacementX, objectPlacementY + 95);
|
|
|
|
|
- g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ for(HashMap.Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
|
|
|
|
|
+ object.getValue().setX(objectPlacementX);
|
|
|
|
|
+ object.getValue().setY(objectPlacementY);
|
|
|
|
|
+ object.getValue().draw(g2);
|
|
|
|
|
+ g2.drawString(object.getKey(), objectPlacementX+2, objectPlacementY + 95);
|
|
|
|
|
+ g2.drawRect(objectPlacementX, objectPlacementY, sideBarWidth/2, 100);
|
|
|
|
|
+ objectPlacementX += 100;
|
|
|
|
|
+ //switch to next row
|
|
|
|
|
+ if(objectPlacementX % 200 == 0){
|
|
|
|
|
+ objectPlacementX = 0;
|
|
|
objectPlacementY += 100;
|
|
objectPlacementY += 100;
|
|
|
- //switch to column2 if colum1 is filled
|
|
|
|
|
- if(objectPlacementY > sideBarHeight)
|
|
|
|
|
- objectPlacementY += sideBarWidth/2;
|
|
|
|
|
- //System.out.println(object.getKey() +" :: "+ object.getValue());
|
|
|
|
|
}
|
|
}
|
|
|
- break;
|
|
|
|
|
- case FACILITIES:
|
|
|
|
|
- //toilet
|
|
|
|
|
- DrawEngine restroom = new RestRoom(60,275, 1 , 10);
|
|
|
|
|
- restroom.draw(g2);
|
|
|
|
|
- g2.drawString("Toilettage", 65, 400);
|
|
|
|
|
- //accespoint
|
|
|
|
|
- DrawEngine accesPoint = new AccessPoint(terrain, 0,425, 0.5, 10);
|
|
|
|
|
- accesPoint.draw(g2);
|
|
|
|
|
- g2.drawString("Ingang", 70, 500);
|
|
|
|
|
- //exitpoint
|
|
|
|
|
- DrawEngine exitPoint = new ExitPoint(terrain, 0,525, 0.5, 10);
|
|
|
|
|
- exitPoint.draw(g2);
|
|
|
|
|
- g2.drawString("Uitgang", 70, 600);
|
|
|
|
|
- //snackbar
|
|
|
|
|
- DrawEngine snackBar = new SnackBar(0, 620, 0.5, 10);
|
|
|
|
|
- snackBar.draw(g2);
|
|
|
|
|
- g2.drawString("Snackbar", 70, 825);
|
|
|
|
|
- break;
|
|
|
|
|
- case PATHS:
|
|
|
|
|
-
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- break;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//draw seperation line between sidebar and field
|
|
//draw seperation line between sidebar and field
|
|
@@ -172,37 +169,23 @@ public class Sidebar implements Serializable {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
//check for object selection
|
|
//check for object selection
|
|
|
- switch (currentTab) {
|
|
|
|
|
- case STAGES:
|
|
|
|
|
-
|
|
|
|
|
- break;
|
|
|
|
|
- case FACILITIES:
|
|
|
|
|
-
|
|
|
|
|
- break;
|
|
|
|
|
- case PATHS:
|
|
|
|
|
-
|
|
|
|
|
- break;
|
|
|
|
|
- default:
|
|
|
|
|
- break;
|
|
|
|
|
|
|
+ int objectPlacementX = 0;
|
|
|
|
|
+ int objectPlacementY = 61;
|
|
|
|
|
+
|
|
|
|
|
+ for(HashMap.Entry<String, DrawEngine> object : drawableArrays.get(currentTab.getValue()).entrySet()){
|
|
|
|
|
+ if(object.getValue().contains(e.getPoint())){
|
|
|
|
|
+ if(object.getValue() instanceof DrawEngine){
|
|
|
|
|
+ try {
|
|
|
|
|
+ Constructor<?> constructor = object.getValue().getClass().getConstructor(int.class, int.class, double.class, double.class);
|
|
|
|
|
+ dragObject = (DrawEngine) constructor.newInstance(new Object[] { (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10 });
|
|
|
|
|
+ terrain.setDragObject(dragObject);
|
|
|
|
|
+ } catch (NoSuchMethodException | SecurityException | IllegalArgumentException | InstantiationException | IllegalAccessException | InvocationTargetException e1) {
|
|
|
|
|
+ e1.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- if(e.getY() > 100 && e.getY() < 260){
|
|
|
|
|
- dragObject = new SimulatorStage((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
|
|
|
|
|
- terrain.setDragObject(dragObject);
|
|
|
|
|
- }else if(e.getY() >= 260 && e.getY() < 425){
|
|
|
|
|
- dragObject = new RestRoom((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
|
|
|
|
|
- terrain.setDragObject(dragObject);
|
|
|
|
|
- }else if(e.getY() >= 430 && e.getY() < 510){
|
|
|
|
|
- dragObject = new AccessPoint(terrain, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
|
|
|
|
|
- terrain.setDragObject(dragObject);
|
|
|
|
|
- }
|
|
|
|
|
- else if(e.getY() >= 510 && e.getY() < 610){
|
|
|
|
|
- dragObject = new ExitPoint(terrain, (int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
|
|
|
|
|
- terrain.setDragObject(dragObject);
|
|
|
|
|
- }
|
|
|
|
|
- else if(e.getY() > 610 && e.getY() < terrain.getFestivalHeight()){
|
|
|
|
|
- dragObject = new SnackBar((int)clickPoint.getX(),(int)clickPoint.getY(), 0.5, 10);
|
|
|
|
|
- terrain.setDragObject(dragObject);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
if(dragObject != null)
|
|
if(dragObject != null)
|
|
|
terrain.addEntity(dragObject);
|
|
terrain.addEntity(dragObject);
|
|
|
}
|
|
}
|