diff --git a/Applicatie/ControlPanel.java b/Applicatie/ControlPanel.java index f5bd63a..b371fb7 100644 --- a/Applicatie/ControlPanel.java +++ b/Applicatie/ControlPanel.java @@ -42,6 +42,7 @@ public class ControlPanel extends JPanel simulatorPanel.add(simulatorLabel); JButton playButton = new JButton("Play"); + playButton.setFocusable(false); playButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); playButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) @@ -52,6 +53,7 @@ public class ControlPanel extends JPanel simulatorPanel.add(playButton); JButton pauseButton = new JButton("Pause"); + pauseButton.setFocusable(false); pauseButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); pauseButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) @@ -62,6 +64,7 @@ public class ControlPanel extends JPanel simulatorPanel.add(pauseButton); JButton stopButton = new JButton("Stop"); + stopButton.setFocusable(false); stopButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); stopButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) @@ -84,6 +87,7 @@ public class ControlPanel extends JPanel timePanel.add(timeLabel); JButton dateButton = new JButton("Pick Date"); + dateButton.setFocusable(false); dateButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); dateButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) @@ -106,6 +110,7 @@ public class ControlPanel extends JPanel peoplePanel.add(peopleLabel); JButton peopleButton = new JButton("Set People"); + peopleButton.setFocusable(false); peopleButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); peopleButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) diff --git a/Applicatie/NewWorldPanel.java b/Applicatie/NewWorldPanel.java index 235e3ba..11b7d7e 100644 --- a/Applicatie/NewWorldPanel.java +++ b/Applicatie/NewWorldPanel.java @@ -23,7 +23,7 @@ import javax.swing.JTextField; @SuppressWarnings("serial") public class NewWorldPanel extends JFrame { - BufferedImage grass,sand,selectedImage; + BufferedImage grass,sand,grass2, sand2,stone, selectedImage; public NewWorldPanel(Panel topPanel) { super("New World"); @@ -32,13 +32,16 @@ public class NewWorldPanel extends JFrame { try { grass = ImageIO.read(new File("images/grassIcon.jpg")); - sand = ImageIO.read(new File("images/sand.jpg")); + sand = ImageIO.read(new File("images/sandIcon.jpg")); + grass2 = ImageIO.read(new File("images/grassIcon2.png")); + sand2 = ImageIO.read(new File("images/sandIcon2.jpg")); + stone = ImageIO.read(new File("images/stoneIcon.jpg")); selectedImage = grass; } catch(IOException e) { e.printStackTrace(); } - String[] terrains = {"Grass", "Sand"}; + String[] terrains = {"Grass", "Grass 2","Sand", "Sand 2", "Stone"}; JPanel mainPanel = new JPanel(new BorderLayout()); JButton button; JLabel label; @@ -88,8 +91,17 @@ public class NewWorldPanel extends JFrame { selectedImage = grass; break; case 1: + selectedImage = grass2; + break; + case 2: selectedImage = sand; break; + case 3: + selectedImage = sand2; + break; + case 4: + selectedImage = stone; + break; } imageLabel.setIcon(new ImageIcon(selectedImage)); } diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index 1272e84..4da85ef 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -45,7 +45,7 @@ import Objects.Wall; public class Panel extends JPanel implements ActionListener { - BufferedImage grass, sand; + BufferedImage grass, grass2, sand, sand2, stone; BufferedImage background; BufferedImage podiumImage, toiletImage, entranceImage, pathImage, wallImage, foodImage, waypointImage; @@ -61,8 +61,8 @@ public class Panel extends JPanel implements ActionListener private DrawObject selectedObject; private String clickedOption = "drag"; private Path currentPath; - private int width = 1920; - private int height = 1080; + private static int width = 1920; + private static int height = 1080; Point2D cameraPoint = new Point2D.Double(getWidth() / 2, getHeight() / 2); float cameraScale = 1; @@ -108,7 +108,10 @@ public class Panel extends JPanel implements ActionListener try { grass = ImageIO.read(new File("images/grass.jpg")); + grass2 = ImageIO.read(new File("images/grass2.png")); sand = ImageIO.read(new File("images/sand.jpg")); + sand2 = ImageIO.read(new File("images/sand2.jpg")); + stone = ImageIO.read(new File("images/stone.jpg")); podiumImage = ImageIO.read(new File("images/stageIcon.png")); toiletImage = ImageIO.read(new File("images/wcIcon.png")); entranceImage = ImageIO.read(new File("images/entranceIcon.png")); @@ -557,12 +560,12 @@ public class Panel extends JPanel implements ActionListener this.agenda = agenda; } - public int getFieldWidth() + public static int getFieldWidth() { return width; } - public int getFieldHeight() + public static int getFieldHeight() { return height; } @@ -612,12 +615,21 @@ public class Panel extends JPanel implements ActionListener cameraScale = 1; switch (terrainIndex) { - case 0: - background = grass; - break; - case 1: - background = sand; - break; + case 0: + background = grass; + break; + case 1: + background = grass2; + break; + case 2: + background = sand; + break; + case 3: + background = sand2; + break; + case 4: + background = stone; + break; } repaint(); } diff --git a/Applicatie/PropertiesPanel.java b/Applicatie/PropertiesPanel.java index adf6df8..d2822ca 100644 --- a/Applicatie/PropertiesPanel.java +++ b/Applicatie/PropertiesPanel.java @@ -98,6 +98,7 @@ public class PropertiesPanel extends JPanel // BUTTONS ROW 1 JPanel row1ButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JButton deleteButton = new JButton("Delete"); + deleteButton.setFocusable(false); deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); deleteButton.addActionListener(new ActionListener() { @@ -112,6 +113,7 @@ public class PropertiesPanel extends JPanel } }); JButton areaButton = new JButton("Area"); + areaButton.setFocusable(false); areaButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); areaButton.addActionListener(new ActionListener() { @@ -331,7 +333,8 @@ public class PropertiesPanel extends JPanel { locationXField.setBackground(Color.WHITE); double xpos = Double.parseDouble(locationXField.getText()); - selectedObject.setPosition(new Point2D.Double(xpos, selectedObject.getPosition().getY())); + selectedObject.setPosition(new Point2D.Double(xpos, selectedObject.getPosition().getY()), true); + update(); p.update(); } catch (NumberFormatException nfe) @@ -370,8 +373,8 @@ public class PropertiesPanel extends JPanel { locationYField.setBackground(Color.WHITE); double ypos = Double.parseDouble(locationYField.getText()); - selectedObject.setPosition(new Point2D.Double(selectedObject.getPosition().getX(), ypos)); - ; + selectedObject.setPosition(new Point2D.Double(selectedObject.getPosition().getX(), ypos), true); + update(); p.update(); } catch (NumberFormatException nfe) diff --git a/Listeners/Keyboard.java b/Listeners/Keyboard.java index f647613..6d2b5c4 100644 --- a/Listeners/Keyboard.java +++ b/Listeners/Keyboard.java @@ -27,23 +27,51 @@ public class Keyboard implements KeyListener { } else if(e.getKeyCode() == e.VK_LEFT) { if(panel.getSelectedObject() != null) - panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()-5,panel.getSelectedObject().getPosition().getY())); + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()-5,panel.getSelectedObject().getPosition().getY()), true); panel.checkCollision(); + panel.getPP().update(); } else if(e.getKeyCode() == e.VK_RIGHT) { if(panel.getSelectedObject() != null) - panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()+5,panel.getSelectedObject().getPosition().getY())); + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX()+5,panel.getSelectedObject().getPosition().getY()), true); panel.checkCollision(); + panel.getPP().update(); } else if(e.getKeyCode() == e.VK_UP) { if(panel.getSelectedObject() != null) - panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()-5)); + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()-5), true); panel.checkCollision(); + panel.getPP().update(); } else if(e.getKeyCode() == e.VK_DOWN) { if(panel.getSelectedObject() != null) - panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()+5)); + panel.getSelectedObject().setPosition(new Point2D.Double(panel.getSelectedObject().getPosition().getX(),panel.getSelectedObject().getPosition().getY()+5), true); panel.checkCollision(); + panel.getPP().update(); + } + else if(e.getKeyCode() == e.VK_ADD) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setScale(panel.getSelectedObject().getScale()+0.2); + panel.checkCollision(); + panel.getPP().update(); + } + else if(e.getKeyCode() == e.VK_SUBTRACT) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setScale(Math.max(panel.getSelectedObject().getScale()-0.2, 0.2)); + panel.checkCollision(); + panel.getPP().update(); + } + else if(e.getKeyCode() == e.VK_COMMA) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setRotation((panel.getSelectedObject().getRotation()-5)%360); + panel.checkCollision(); + panel.getPP().update(); + } + else if(e.getKeyCode() == e.VK_PERIOD) { + if(panel.getSelectedObject() != null) + panel.getSelectedObject().setRotation((panel.getSelectedObject().getRotation()+5)%360); + panel.checkCollision(); + panel.getPP().update(); } else if(e.getKeyCode() == e.VK_ENTER) { if(panel.getClickedOption().equals("Path")) { diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index e23edaf..bcc0c18 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -135,40 +135,10 @@ public class Mouse extends MouseAdapter public void mouseReleased(MouseEvent e) { - if (panel.getDragObject() != null) - { - if (panel.getDragObject().getRectangleColor() != Color.RED) - { - if (panel.getDragObject() instanceof Entrance) - { - Rectangle2D rect = panel.getDragObject().getRectangle(); - double xl = (panel.getFieldWidth() / 2) + rect.getMinX(); - double xr = panel.getFieldWidth() - xl + rect.getWidth(); - double yt = (panel.getFieldHeight() / 2) + rect.getMinY(); - double yb = panel.getFieldHeight() - yt + rect.getHeight(); - if (xl < xr && xl < yt && xl < yb) - { - panel.getDragObject().setPosition(new Point2D.Double(-panel.getFieldWidth() / 2, rect.getMinY())); - } - else if (xr < xl && xr < yt && xr < yb) - { - panel.getDragObject().setPosition(new Point2D.Double(panel.getFieldWidth() / 2 - rect.getWidth(), rect.getMinY())); - } - else if (yt < xl && yt < xr && yt < yb) - { - panel.getDragObject().setPosition(new Point2D.Double(rect.getMinX(), -panel.getFieldHeight() / 2)); - } - else if (yb < xl && yb < yt && yb < xr) - { - panel.getDragObject().setPosition(new Point2D.Double(rect.getMinX(), panel.getFieldHeight() / 2 - rect.getHeight())); - } - else - { - panel.getDragObject().setPosition(new Point2D.Double(-panel.getFieldWidth() / 2, -panel.getFieldHeight() / 2)); - } - - } - + if(panel.getDragObject() != null) { + if(panel.getDragObject().getRectangleColor() != Color.RED) { + panel.getDragObject().setPosition(panel.getDragObject().getPosition(), true); + panel.getPP().update(); panel.setDragObject(null); panel.setClickedOption("drag"); } diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java index 22e1c5b..d07d397 100644 --- a/Objects/DrawObject.java +++ b/Objects/DrawObject.java @@ -234,6 +234,10 @@ public abstract class DrawObject implements Serializable { this.position = position; } + public void setPosition(Point2D position, boolean b) + { + this.position = position; + } public double getRotation() { diff --git a/Objects/Entrance.java b/Objects/Entrance.java index f4de61b..43cf88b 100644 --- a/Objects/Entrance.java +++ b/Objects/Entrance.java @@ -1,6 +1,9 @@ package Objects; import java.awt.geom.Point2D; +import java.awt.geom.Rectangle2D; + +import Applicatie.Panel; public class Entrance extends DrawObject { @@ -15,5 +18,35 @@ public class Entrance extends DrawObject { return "Entrance"; } + + public void setPosition(Point2D position, boolean b) + { + //this.position = position; + Rectangle2D rect = getRectangle(); + double xl = (Panel.getFieldWidth()/2) + rect.getMinX(); + double xr = Panel.getFieldWidth() - (Panel.getFieldWidth()/2 + rect.getMaxX()); + double yt = (Panel.getFieldHeight()/2) + rect.getMinY(); + double yb = Panel.getFieldHeight() - (Panel.getFieldHeight()/2 + rect.getMaxY()); + if(xl < xr && xl < yt && xl < yb) + { + this.position = new Point2D.Double(-Panel.getFieldWidth()/2, position.getY()); + } + else if(xr < xl && xr < yt && xr < yb) + { + this.position = new Point2D.Double(Panel.getFieldWidth()/2 - rect.getWidth(), position.getY()); + } + else if(yt < xl && yt < xr && yt < yb) + { + this.position = new Point2D.Double(position.getX(), -Panel.getFieldHeight()/2); + } + else if(yb < xl && yb < yt && yb < xr) + { + this.position = new Point2D.Double(position.getX(), Panel.getFieldHeight()/2 - rect.getHeight()); + } + else + { + this.position = new Point2D.Double(-Panel.getFieldWidth()/2, -Panel.getFieldHeight()/2); + } + } } diff --git a/images/grass2.png b/images/grass2.png new file mode 100644 index 0000000..0633850 Binary files /dev/null and b/images/grass2.png differ diff --git a/images/grassIcon2.png b/images/grassIcon2.png new file mode 100644 index 0000000..e4eec71 Binary files /dev/null and b/images/grassIcon2.png differ diff --git a/images/path.jpg b/images/path.jpg deleted file mode 100644 index 9704f8d..0000000 Binary files a/images/path.jpg and /dev/null differ diff --git a/images/pathIcon.png b/images/pathIcon.png deleted file mode 100644 index 1b36611..0000000 Binary files a/images/pathIcon.png and /dev/null differ diff --git a/images/sand2.jpg b/images/sand2.jpg new file mode 100644 index 0000000..7aa02fd Binary files /dev/null and b/images/sand2.jpg differ diff --git a/images/sandIcon.jpg b/images/sandIcon.jpg new file mode 100644 index 0000000..94faf79 Binary files /dev/null and b/images/sandIcon.jpg differ diff --git a/images/sandIcon2.jpg b/images/sandIcon2.jpg new file mode 100644 index 0000000..dafa851 Binary files /dev/null and b/images/sandIcon2.jpg differ diff --git a/images/stone.jpg b/images/stone.jpg new file mode 100644 index 0000000..0667548 Binary files /dev/null and b/images/stone.jpg differ diff --git a/images/stoneIcon.jpg b/images/stoneIcon.jpg new file mode 100644 index 0000000..e232f89 Binary files /dev/null and b/images/stoneIcon.jpg differ