Prechádzať zdrojové kódy

terrainInt to enum for cleaner code.
Fixed one camera bug, but still lots to go

DaveyMathijssen 10 rokov pred
rodič
commit
7eeb8b955f

+ 5 - 5
src/gui/frames/MainFrame.java

@@ -26,7 +26,7 @@ public class MainFrame extends JFrame{
     
     private int length;
     private int width;
-    private int terrain;
+    private SimulatorPane.Terrains terrain;
     
     public MainFrame(){
         this.agenda = new Agenda();
@@ -41,7 +41,7 @@ public class MainFrame extends JFrame{
 		
 		this.length = 100000;
 		this.width = 100000;
-		this.terrain = 100000;
+		this.terrain = SimulatorPane.Terrains.UNDEFINED;
 		
 		this.getContentPane().setBackground( Color.WHITE );
 
@@ -79,8 +79,8 @@ public class MainFrame extends JFrame{
         }
     }
     
-    public void setTerrain(int number){
-    	this.terrain = number;
+    public void setTerrain(SimulatorPane.Terrains terrain){
+    	this.terrain = terrain;
     }
 
     public void setLength(int length){
@@ -99,7 +99,7 @@ public class MainFrame extends JFrame{
     	return length;
     }
     
-    public int getTerrain(){
+    public SimulatorPane.Terrains getTerrain(){
     	return terrain;
     }
     

+ 2 - 1
src/gui/menubar/MenuBar.java

@@ -2,6 +2,7 @@ package gui.menubar;
 
 import gui.frames.MainFrame;
 import gui.simulator.SimulatorDialogPane;
+import gui.simulator.SimulatorPane;
 
 import java.awt.FlowLayout;
 import java.awt.event.ActionEvent;
@@ -150,7 +151,7 @@ public class MenuBar extends JMenuBar{
 				System.out.println("Simulator View");
 				if(mainFrame.getLength() == 100000 ||
 						mainFrame.getWidth() == 100000 ||
-						mainFrame.getTerrain() == 100000){
+						mainFrame.getTerrain() == SimulatorPane.Terrains.UNDEFINED){
 					new SimulatorDialogPane(mainFrame);
 				} else {
 					mainFrame.changeView(MainFrame.Views.SIMULATOR);

+ 0 - 1
src/gui/panels/edit/dialogs/ActDialogPanel.java

@@ -19,7 +19,6 @@ import agenda.ActTime;
 import agenda.Agenda;
 import agenda.Artist;
 import agenda.Stage;
-import javafx.scene.control.RadioButton;
 
 /**
  * Created by gjoosen on 20/02/15.

+ 8 - 8
src/gui/simulator/SimulatorDialogPane.java

@@ -25,12 +25,12 @@ public class SimulatorDialogPane extends JDialog{
 	    private JTextField width;
 	    private JComboBox<String> terrain;
 	    private MainFrame mainFrame;
-	    private int terrainInt;
+	    private SimulatorPane.Terrains terrainEnum;
 	    
 	    
 	    public SimulatorDialogPane(MainFrame mainFrame){
 	    	this.mainFrame = mainFrame;
-	    	this.terrainInt = 1;
+	    	this.terrainEnum = SimulatorPane.Terrains.BEACH;
 	        this.getContentPane().setBackground( Color.WHITE );
 	        JPanel main = new JPanel();
 	        main.setOpaque(false);
@@ -99,11 +99,11 @@ public class SimulatorDialogPane extends JDialog{
 	                JComboBox<String> cb = (JComboBox<String>)e.getSource();
 	                String terrainName = (String)cb.getSelectedItem();
 	                switch(terrainName){
-	                case "Beach": setTerrainInt(1);
+	                case "Beach": setTerrainInt(SimulatorPane.Terrains.BEACH);
 	                			  break;
-	                case "Grass": setTerrainInt(2);
+	                case "Grass": setTerrainInt(SimulatorPane.Terrains.GRASS);
 	                			  break;
-	                case "Urban": setTerrainInt(3);
+	                case "Urban": setTerrainInt(SimulatorPane.Terrains.URBAN);
 	                		 	  break;
 	                }
 	            }});
@@ -111,8 +111,8 @@ public class SimulatorDialogPane extends JDialog{
 	        return name;
 	    }
 	    
-	    private void setTerrainInt(int number){
-	    	this.terrainInt = number;
+	    private void setTerrainInt(SimulatorPane.Terrains terrain){
+	    	this.terrainEnum = terrain;
 	    }
 
 
@@ -148,7 +148,7 @@ public class SimulatorDialogPane extends JDialog{
 	            	int width = Integer.parseInt(this.width.getText());
 	            	this.mainFrame.setLength(length);
 	            	this.mainFrame.setWidth(width);
-	            	this.mainFrame.setTerrain(terrainInt);
+	            	this.mainFrame.setTerrain(terrainEnum);
 	            	this.mainFrame.changeView(MainFrame.Views.SIMULATOR);
 	                dispose();
 	            }

+ 4 - 1
src/gui/simulator/SimulatorPane.java

@@ -11,8 +11,11 @@ import agenda.Agenda;
 public class SimulatorPane extends JPanel{
 	
 	private Agenda agenda;
+	
+	//terrain type enums
+	public enum Terrains{BEACH, GRASS, URBAN, UNDEFINED};
 
-	public SimulatorPane(Agenda agenda, int length, int width, int terrain){
+	public SimulatorPane(Agenda agenda, int length, int width, Terrains terrain){
         super.setLayout(new BorderLayout());
 		this.agenda = agenda;
         this.setOpaque(true);

+ 15 - 12
src/gui/simulator/Terrain.java

@@ -33,39 +33,36 @@ public class Terrain extends JPanel {
     private Draw dragObject, selectedObject;
     private BufferedImage background;
     
-    private int length;
-    private int width;
-    private int terrain;
-    
+    private int length, width;
+    private SimulatorPane.Terrains terrain;
     Point2D cameraPoint = new Point2D.Double(1920/2,1080/2);
 	float cameraScale = 1;
 	
 	Point2D lastClickPosition;
 	Point lastMousePosition;
 
-    public Terrain(int length, int width, int terrain){
+    public Terrain(int length, int width, SimulatorPane.Terrains terrain){
     	//get values
     	this.length = length;
     	this.width = width;
     	this.terrain = terrain;
-    	
     	//set terrainbackground
     	switch(terrain){
-    	case 1: 
+    	case BEACH: 
     		try {
 			background = ImageIO.read(new File("res/sand.jpg"));
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
     		break;
-    	case 2:
+    	case GRASS:
     		try {
     			background = ImageIO.read(new File("res/grass.jpg"));
     		} catch (IOException e) {
     			e.printStackTrace();
     		}
     		break;
-    	case 3:
+    	case URBAN:
     		try {
     			background = ImageIO.read(new File("res/street.jpg"));
     		} catch (IOException e) {
@@ -84,6 +81,7 @@ public class Terrain extends JPanel {
         addMouseListener(new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
+            	lastMousePosition = e.getPoint();
             	Point2D clickPoint = getClickPoint(e.getPoint());
                 boolean newObject = false;
                 if(e.getX() < 200)
@@ -169,9 +167,14 @@ public class Terrain extends JPanel {
                         object.setScale(scale);
                     }else{
                     	cameraScale *= 1 - (e.getPreciseWheelRotation()/10.0);
+//                    	if(e.getWheelRotation() == -1){
+//                    		cameraScale++;
+//                    	}else if(e.getWheelRotation() == 1){
+//                    		cameraScale--;
+//                    	}
                     }
                 }
-                repaint();
+            	repaint();
             }
         });
         
@@ -207,6 +210,8 @@ public class Terrain extends JPanel {
 		
 		//draw simulation field
 		g2.setClip(new Rectangle2D.Double(200, 0, getWidth()-200, getHeight()));
+		g2.translate(200,0);
+		g2.setTransform(getCamera());
         TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 500, 500));
 		g2.setPaint(p);
 		g2.fill(new Rectangle2D.Double(0,0,width,length));
@@ -230,10 +235,8 @@ public class Terrain extends JPanel {
 
             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);