diff --git a/Applicatie/MenuBar.java b/Applicatie/MenuBar.java index 343dbf9..486580f 100644 --- a/Applicatie/MenuBar.java +++ b/Applicatie/MenuBar.java @@ -17,19 +17,40 @@ public class MenuBar extends JMenuBar JMenu file = new JMenu("File"); - JMenuItem newPath = new JMenuItem("New Path"); - newPath.addActionListener(new ActionListener() { + JMenuItem item = new JMenuItem("New"); + item.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - w.getPanel().startPath(); + NewWorldPanel world = new NewWorldPanel(w.getPanel()); } }); + file.add(item); - file.add(newPath); + item = new JMenuItem("Open"); + item.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + + } + }); + file.add(item); - JMenuItem exit = new JMenuItem("Exit"); - exit.addActionListener(new ActionListener() + item = new JMenuItem("Save"); + item.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + + } + }); + file.add(item); + + file.addSeparator(); + + item = new JMenuItem("Exit"); + item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { @@ -37,8 +58,35 @@ public class MenuBar extends JMenuBar } }); - file.add(exit); - + file.add(item); add(file); + + file = new JMenu("Path"); + + item = new JMenuItem("New Path"); + item.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + w.getPanel().startPath(); + } + }); + + file.add(item); + add(file); + + file = new JMenu("Help"); + + item = new JMenuItem("About"); + item.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + JOptionPane.showMessageDialog(w.getFrames()[0],"Festivalplanner\nMade by: Wesley de Hek, Kenneth van Ewijk, Remco Sannen, Yorick Rommers & Guus van Dongen "); + } + }); + file.add(item); + add(file); + } } diff --git a/Applicatie/NewWorldPanel.java b/Applicatie/NewWorldPanel.java new file mode 100644 index 0000000..4be9363 --- /dev/null +++ b/Applicatie/NewWorldPanel.java @@ -0,0 +1,103 @@ +package Applicatie; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +public class NewWorldPanel extends JFrame { + + public NewWorldPanel(Panel topPanel) { + super("New World"); + setDefaultCloseOperation(HIDE_ON_CLOSE); + + String[] terrains = {"Grass", "Sand"}; + JPanel mainPanel = new JPanel(new BorderLayout()); + JButton button; + JLabel label; + JTextField heightTextField; + JTextField widthTextField; + JComboBox terrainBox; + + //Top: + JPanel panel = new JPanel(); + BoxLayout box = new BoxLayout(panel, BoxLayout.Y_AXIS); + panel.setLayout(box); + panel.add(Box.createRigidArea(new Dimension(0,20))); + label = new JLabel("Enter your preferences: "); + panel.add(label); + panel.add(Box.createRigidArea(new Dimension(0,15))); + //Width: + JPanel linePanel = new JPanel(); + label = new JLabel("Width: "); + widthTextField = new JTextField("1920"); + widthTextField.setPreferredSize(new Dimension(100,20)); + linePanel.add(label); + linePanel.add(widthTextField); + panel.add(linePanel); + //Height: + linePanel = new JPanel(); + label = new JLabel("Height: "); + heightTextField = new JTextField("1080"); + heightTextField.setPreferredSize(new Dimension(100,20)); + linePanel.add(label); + linePanel.add(heightTextField); + panel.add(linePanel); + //Terrain: + linePanel = new JPanel(); + label = new JLabel("Terrain: "); + terrainBox = new JComboBox(terrains); + terrainBox.setPreferredSize(new Dimension(100,20)); + linePanel.add(label); + linePanel.add(terrainBox); + panel.add(linePanel); + //Image: + + + + + mainPanel.add(panel,BorderLayout.NORTH); + //Bottom: + panel = new JPanel(); + //Cancel: + button = new JButton("Cancel"); + button.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + NewWorldPanel.this.dispose(); + } + }); + panel.add(button); + + button = new JButton("Apply"); + button.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + topPanel.newWorld(Integer.parseInt(widthTextField.getText()),Integer.parseInt(heightTextField.getText()),terrainBox.getSelectedIndex()); + NewWorldPanel.this.dispose(); + } + }); + panel.add(button); + + + mainPanel.add(panel,BorderLayout.SOUTH); + add(mainPanel); + + //Finishing off + pack(); + setSize(300,350); + setLocationRelativeTo(null); + setVisible(true); + } +} diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index 7c42f63..ed1894d 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -8,10 +8,7 @@ import java.awt.Graphics2D; import java.awt.Point; import java.awt.Stroke; import java.awt.TexturePaint; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.awt.geom.AffineTransform; -import java.awt.geom.Line2D; import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; @@ -23,15 +20,15 @@ import java.util.Iterator; import javax.imageio.ImageIO; import javax.swing.JPanel; -import javax.swing.Timer; import Listeners.Mouse; import Listeners.MouseMotion; import Listeners.MouseWheel; +import Objects.DrawObject; import Objects.Entrance; import Objects.Food; -import Objects.Path; import Objects.OldPath; +import Objects.Path; import Objects.Stage; import Objects.Toilet; import Objects.Wall; @@ -40,6 +37,7 @@ import Objects.Wall; public class Panel extends JPanel { + BufferedImage grass,sand; BufferedImage background; BufferedImage podiumImage, toiletImage, entranceImage, pathImage, wallImage, foodImage; @@ -54,6 +52,8 @@ public class Panel extends JPanel private DrawObject selectedObject; private String clickedOption = "drag"; private Path currentPath; + private int width = 1920; + private int height = 1080; Point2D cameraPoint = new Point2D.Double(getWidth() / 2, getHeight() / 2); float cameraScale = 1; @@ -84,13 +84,15 @@ public class Panel extends JPanel pp.setPanel(this); try { - background = ImageIO.read(new File("images/grass.jpg")); + grass = ImageIO.read(new File("images/grass.jpg")); + sand = ImageIO.read(new File("images/sand.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")); pathImage = ImageIO.read(new File("images/pathIcon.png")); wallImage = ImageIO.read(new File("images/wallIcon.png")); foodImage = ImageIO.read(new File("images/foodIcon.png")); + background = grass; } catch (IOException e) { e.printStackTrace(); @@ -177,7 +179,7 @@ public class Panel extends JPanel TexturePaint p = new TexturePaint(background, new Rectangle2D.Double(0, 0, 100, 100)); g2.setPaint(p); - g2.fill(new Rectangle2D.Double(-1920, -1080, 3840, 2160)); + g2.fill(new Rectangle2D.Double(-width/2,-height/2, width, height)); BasicStroke stroke = new BasicStroke(10); g2.setStroke(stroke); @@ -452,4 +454,21 @@ public class Panel extends JPanel repaint(); } } + + public void newWorld(int width, int height, int terrainIndex) { + this.width = width; + this.height = height; + paths.clear(); + objects.clear(); + cameraScale = 1; + switch(terrainIndex) { + case 0: + background = grass; + break; + case 1: + background = sand; + break; + } + repaint(); + } } diff --git a/Applicatie/PropertiesPanel.java b/Applicatie/PropertiesPanel.java index ba9b0b8..8ac8164 100644 --- a/Applicatie/PropertiesPanel.java +++ b/Applicatie/PropertiesPanel.java @@ -20,8 +20,10 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import Objects.DrawObject; import Objects.Path; + @SuppressWarnings("serial") public class PropertiesPanel extends JPanel { @@ -35,11 +37,16 @@ public class PropertiesPanel extends JPanel JLabel nameLabel; + JPanel areaPanel; JTextField locationXField; JTextField locationYField; JTextField scaleField; JTextField rotationField; + JTextField areaTopField; + JTextField areaBottomField; + JTextField areaLeftField; + JTextField areaRightField; PropertiesPanel() { @@ -80,9 +87,13 @@ public class PropertiesPanel extends JPanel buttonPanel.setMaximumSize(new Dimension(200, 40)); buttonPanel.add(buttonLabel); add(buttonPanel); + + //AREA PANEL: AVAILABLE FOR ACTIONLISTENER + areaPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaPanel.setVisible(false); - // DELETE - JPanel deletePanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + // BUTTONS ROW 1 + JPanel row1ButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); JButton deleteButton = new JButton("Delete"); deleteButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); deleteButton.addActionListener(new ActionListener() @@ -96,10 +107,165 @@ public class PropertiesPanel extends JPanel } } }); - deletePanel.setPreferredSize(new Dimension(200, 50)); - deletePanel.setMaximumSize(new Dimension(200, 50)); - deletePanel.add(deleteButton); - add(deletePanel); + JButton areaButton = new JButton("Area"); + areaButton.setFont(new Font("Segoe UI", Font.PLAIN, 20)); + areaButton.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + areaPanel.setVisible(!areaPanel.isVisible()); + } + }); + row1ButtonPanel.setPreferredSize(new Dimension(200, 50)); + row1ButtonPanel.setMaximumSize(new Dimension(200, 50)); + row1ButtonPanel.add(deleteButton); + row1ButtonPanel.add(areaButton); + add(row1ButtonPanel); + + + //AREA PANEL + JLabel areaLabel = new JLabel("Area size"); + areaLabel.setFont(new Font("Segoe UI", Font.ITALIC, 20)); + areaPanel.setPreferredSize(new Dimension(200, 150)); + areaPanel.setMaximumSize(new Dimension(200, 250)); + areaPanel.add(areaLabel); + add(areaPanel); + { + JPanel areaTopPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaTopPanel.setPreferredSize(new Dimension(200, 50)); + areaPanel.add(areaTopPanel); + + JLabel areaTopLabel = new JLabel("Top"); + areaTopPanel.add(areaTopLabel); + areaTopField = new JTextField(); + areaTopField.setPreferredSize(new Dimension(140, 25)); + { + areaTopField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaTopField.setBackground(Color.WHITE); + int top = Integer.parseInt(areaTopField.getText()); + selectedObject.setAreaTop(top); + p.update(); + } catch (NumberFormatException nfe) + { + areaTopField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaTopPanel.add(areaTopField); + } + { + JPanel areaBottomPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaBottomPanel.setPreferredSize(new Dimension(200, 50)); + areaPanel.add(areaBottomPanel); + + JLabel areaBottomLabel = new JLabel("Bottom"); + areaBottomPanel.add(areaBottomLabel); + areaBottomField = new JTextField(); + areaBottomField.setPreferredSize(new Dimension(120, 25)); + { + areaBottomField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaBottomField.setBackground(Color.WHITE); + int bottom = Integer.parseInt(areaBottomField.getText()); + selectedObject.setAreaBottom(bottom); + p.update(); + } catch (NumberFormatException nfe) + { + areaBottomField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaBottomPanel.add(areaBottomField); + } + { + JPanel areaLeftPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaLeftPanel.setPreferredSize(new Dimension(200, 50)); + areaPanel.add(areaLeftPanel); + + JLabel areaLeftLabel = new JLabel("Left"); + areaLeftPanel.add(areaLeftLabel); + areaLeftField = new JTextField(); + areaLeftField.setPreferredSize(new Dimension(138, 25)); + { + areaLeftField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaLeftField.setBackground(Color.WHITE); + int left = Integer.parseInt(areaLeftField.getText()); + selectedObject.setAreaLeft(left); + p.update(); + } catch (NumberFormatException nfe) + { + areaLeftField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaLeftPanel.add(areaLeftField); + } + { + JPanel areaRightPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + areaRightPanel.setPreferredSize(new Dimension(200, 50)); + areaPanel.add(areaRightPanel); + + JLabel areaRightLabel = new JLabel("Right"); + areaRightPanel.add(areaRightLabel); + areaRightField = new JTextField(); + areaRightField.setPreferredSize(new Dimension(130, 25)); + { + areaRightField.addKeyListener(new KeyListener() + { + + public void keyTyped(KeyEvent e){} + + public void keyReleased(KeyEvent e) + { + try + { + areaRightField.setBackground(Color.WHITE); + int right = Integer.parseInt(areaRightField.getText()); + selectedObject.setAreaRight(right); + p.update(); + } catch (NumberFormatException nfe) + { + areaRightField.setBackground(Color.RED); + } + } + + public void keyPressed(KeyEvent e){} + }); + } + areaRightPanel.add(areaRightField); + } // SPACER add(Box.createRigidArea(spacerDimension)); @@ -355,7 +521,7 @@ public class PropertiesPanel extends JPanel } nameLabel.setText("No Selection"); - + areaPanel.setVisible(false); } private void fillFields() @@ -367,6 +533,12 @@ public class PropertiesPanel extends JPanel locationYField.setText(Math.round(selectedObject.getPosition().getY()) + ""); scaleField.setText((double) Math.round(selectedObject.getScale() * 10) / 10 + ""); rotationField.setText(Math.round(selectedObject.getRotation() % 360) + ""); + + areaTopField.setText(selectedObject.getAreaTop() + ""); + areaBottomField.setText(selectedObject.getAreaBottom() + ""); + areaLeftField.setText(selectedObject.getAreaLeft() + ""); + areaRightField.setText(selectedObject.getAreaRight() + ""); + } public void setPanel(Panel p) diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index 6f50d83..e611c2c 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -6,8 +6,8 @@ import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; -import Applicatie.DrawObject; import Applicatie.Panel; +import Objects.DrawObject; import Objects.Stage; public class Mouse extends MouseAdapter diff --git a/Listeners/MouseMotion.java b/Listeners/MouseMotion.java index a40a559..cd6ae6f 100644 --- a/Listeners/MouseMotion.java +++ b/Listeners/MouseMotion.java @@ -5,8 +5,8 @@ import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.awt.geom.Point2D; -import Applicatie.DrawObject; import Applicatie.Panel; +import Objects.DrawObject; public class MouseMotion extends MouseMotionAdapter { diff --git a/Listeners/MouseWheel.java b/Listeners/MouseWheel.java index c841884..4f6fcea 100644 --- a/Listeners/MouseWheel.java +++ b/Listeners/MouseWheel.java @@ -4,8 +4,8 @@ import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.geom.Point2D; -import Applicatie.DrawObject; import Applicatie.Panel; +import Objects.DrawObject; public class MouseWheel implements MouseWheelListener { diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java new file mode 100644 index 0000000..ccb0aec --- /dev/null +++ b/Objects/DrawObject.java @@ -0,0 +1,356 @@ +package Objects; + +import java.awt.BasicStroke; +import java.awt.Color; +import java.awt.Graphics2D; +import java.awt.Image; +import java.awt.Shape; +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 javax.swing.ImageIcon; + +public abstract class DrawObject +{ + Point2D position; + double rotation; + double scale; + int width; + int height; + private Image image; + protected boolean selected; + + protected int areaTop; + protected int areaBottom; + protected int areaLeft; + protected int areaRight; + + private Rectangle2D rektAngle; + private Rectangle2D upperLeftCorner; + private Rectangle2D upperRightCorner; + private Rectangle2D bottomLeftCorner; + private Rectangle2D bottomRightCorner; + private Ellipse2D rotateDot; + + static final int UPPERLEFT = 0; + static final int UPPERRIGHT = 1; + static final int BOTTOMLEFT = 2; + static final int BOTTOMRIGHT = 3; + private Color rectangleColor; + + public DrawObject(String filename, Point2D position) + { + image = new ImageIcon(filename).getImage(); + + width = image.getWidth(null); + height = image.getHeight(null); + + scale = 1; + rotation = 0; + this.position = position; + rectangleColor = Color.BLACK; + + areaTop = 0; + areaBottom = 0; + areaLeft = 0; + areaRight = 0; + } + + public abstract String getName(); + + public void draw(Graphics2D g) + { + AffineTransform tx = getTransform(); + g.drawImage(image, tx, null); + if (selected) + { + // g.rotate(Math.toRadians(rotation), width/2, + // height/2); + AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(rotation), position.getX() + image.getWidth(null) / 2, position.getY() + image.getHeight(null) / 2); + // g.transform(rotate); + g.setColor(rectangleColor); + g.setStroke(new BasicStroke(7)); + rektAngle = new Rectangle2D.Double((int) position.getX() - areaLeft, (int) position.getY() - areaTop, width + areaLeft + areaRight, height + areaTop + areaBottom); + tx = getTransformRectangle(); + rektAngle.setFrame(tx.createTransformedShape(rektAngle).getBounds()); + g.draw(rektAngle); + g.setColor(Color.YELLOW); + upperLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() - 7, 15, 15); + upperRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() - 7, 15, 15); + bottomLeftCorner = new Rectangle2D.Double(rektAngle.getX() - 7, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + bottomRightCorner = new Rectangle2D.Double(rektAngle.getX() + rektAngle.getWidth() - 8, rektAngle.getY() + rektAngle.getHeight() - 8, 15, 15); + g.fill(upperLeftCorner); // upperleft + g.fill(upperRightCorner); // upperright + g.fill(bottomLeftCorner); // bottomleft + g.fill(bottomRightCorner); // bottomright + g.setColor(Color.RED); + rotateDot = new Ellipse2D.Double((rektAngle.getX() + (rektAngle.getWidth() / 2)) - 8, rektAngle.getY() - 8, 15, 15); + g.fill(rotateDot); + + } + } + + protected AffineTransform getTransform() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + tx.translate(position.getX(), position.getY()); + tx.rotate(Math.toRadians(rotation), (width + areaLeft + areaRight) / 2, (height + areaTop + areaBottom) / 2); + return tx; + } + + protected AffineTransform getTransformSelection() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + tx.translate(position.getX(), position.getY()); + return tx; + } + + /** + * Special transformation for the selection rectangle, because the + * translation of the image one places the rectangle translated from the + * image. + * + * @return affineTransform + */ + private AffineTransform getTransformRectangle() + { + AffineTransform tx = new AffineTransform(); + tx.scale(scale, scale); + return tx; + } + + public boolean contains(Point2D clickPoint) + { + Shape shape; + if (rektAngle == null) + { + shape = new Rectangle2D.Double(0 - areaLeft, 0 - areaTop, width + areaLeft + areaRight, height + areaTop + areaBottom); + return getTransform().createTransformedShape(shape).contains(clickPoint); + + } + else + { + shape = new Rectangle2D.Double(-9 - areaLeft, -9 - areaTop, width + 13 + areaLeft + areaRight, height + 13 + areaTop + areaBottom); + return getTransformSelection().createTransformedShape(shape).contains(clickPoint); + } + + } + + public Point2D getObjectPoint(Point2D point) + { + try + { + return getTransform().inverseTransform(point, null); + + } + catch (NoninvertibleTransformException e) + { + e.printStackTrace(); + } + return null; + } + + /** + * Method that gets all the corner + * coordinates index: 0 -> top left 1 -> top right 3 -> bottom left 4 -> + * bottom right + * + * @return corner coordinates + */ + public Point2D[] getCorners() + { + Rectangle2D tempRekt = new Rectangle2D.Double(0, 0, image.getWidth(null), image.getHeight(null)); + tempRekt.setFrame(getTransform().createTransformedShape(tempRekt).getBounds()); + Point2D[] points = new Point2D[4]; + Point2D point = new Point2D.Double(tempRekt.getX(), tempRekt.getY()); + points[0] = point; + point = new Point2D.Double(tempRekt.getX() + tempRekt.getHeight(), tempRekt.getY()); + points[1] = point; + point = new Point2D.Double(tempRekt.getX(), tempRekt.getY() + tempRekt.getHeight()); + points[2] = point; + point = new Point2D.Double(tempRekt.getX() + tempRekt.getHeight(), tempRekt.getY() + tempRekt.getHeight()); + points[3] = point; + return points; + } + + /** + * Checking + * collision. + * + * @param object + * . the drawObject to check collision with. + * @return if there is a collision. + */ + public boolean collision(DrawObject object) + { + Shape ownShape = getRectangle(); + Rectangle2D otherRectangle = object.getTransform().createTransformedShape(object.getImageRectangle()).getBounds2D(); + if(ownShape != null && otherRectangle != null) { + if (ownShape.intersects(otherRectangle)) + return true; + else + return false; + } + else + return false; + } + + /** + * This method checks if the place thats clicked is inside one of the + * corners. + * + * @param point + * @param corner + * @return if the clicked point is inside one of the corners + */ + public boolean containsCorner(Point2D point, int corner) + { + Rectangle2D chosenCorner = null; + switch (corner) + { + case 0: + chosenCorner = upperLeftCorner; + break; + case 1: + chosenCorner = upperRightCorner; + break; + case 2: + chosenCorner = bottomLeftCorner; + break; + case 3: + chosenCorner = bottomRightCorner; + break; + case 4: + if (point.getX() > rotateDot.getX() && point.getX() < rotateDot.getX() + rotateDot.getWidth() && point.getY() > rotateDot.getY() && point.getY() < rotateDot.getY() + rotateDot.getHeight()) + return true; + else + return false; + + } + if (point.getX() > chosenCorner.getX() && point.getX() < chosenCorner.getX() + chosenCorner.getWidth() && point.getY() > chosenCorner.getY() && point.getY() < chosenCorner.getY() + chosenCorner.getHeight()) + return true; + else + return false; + } + + public void setSelected(boolean b) + { + selected = b; + } + + public Point2D getPosition() + { + return position; + } + + public void setPosition(Point2D position) + { + this.position = position; + } + + public double getRotation() + { + return rotation; + } + + public void setRotation(double rotation) + { + this.rotation = rotation; + } + + public double getScale() + { + return scale; + } + + public void setScale(double scale) + { + this.scale = scale; + } + + public Image getImage() + { + return image; + } + + public void setImage(Image image) + { + this.image = image; + } + + public boolean isSelected() + { + return selected; + } + + public Rectangle2D getRectangle() + { + return rektAngle; + } + + public void setRectangle(Rectangle2D rectangle) + { + rektAngle = rectangle; + } + + public Color getRectangleColor() + { + return rectangleColor; + } + + public void setRectangleColor(Color rectangleColor) + { + this.rectangleColor = rectangleColor; + } + + public Rectangle2D getImageRectangle() + { + return new Rectangle2D.Double(0, 0, image.getWidth(null), image.getHeight(null)); + } + + public int getAreaTop() + { + return areaTop; + } + + public void setAreaTop(int areaTop) + { + this.areaTop = areaTop; + } + + public int getAreaBottom() + { + return areaBottom; + } + + public void setAreaBottom(int areaBottom) + { + this.areaBottom = areaBottom; + } + + public int getAreaLeft() + { + return areaLeft; + } + + public void setAreaLeft(int areaLeft) + { + this.areaLeft = areaLeft; + } + + public int getAreaRight() + { + return areaRight; + } + + public void setAreaRight(int areaRight) + { + this.areaRight = areaRight; + } + +} diff --git a/Objects/Entrance.java b/Objects/Entrance.java index 69a7033..eab28db 100644 --- a/Objects/Entrance.java +++ b/Objects/Entrance.java @@ -2,8 +2,6 @@ package Objects; import java.awt.geom.Point2D; -import Applicatie.DrawObject; - public class Entrance extends DrawObject { diff --git a/Objects/Food.java b/Objects/Food.java index cdd5028..d6bdb65 100644 --- a/Objects/Food.java +++ b/Objects/Food.java @@ -1,8 +1,6 @@ package Objects; import java.awt.geom.Point2D; -import Applicatie.DrawObject; - public class Food extends DrawObject { diff --git a/Objects/OldPath.java b/Objects/OldPath.java deleted file mode 100644 index eea51b7..0000000 --- a/Objects/OldPath.java +++ /dev/null @@ -1,21 +0,0 @@ -package Objects; - -import java.awt.geom.Point2D; - -import Applicatie.DrawObject; - -public class OldPath extends DrawObject -{ - - public OldPath(Point2D position) - { - super("images/path.jpg", position); - } - - @Override - public String getName() - { - return "Path"; - } - -} diff --git a/Objects/Path.java b/Objects/Path.java index b6e7da0..67cbe12 100644 --- a/Objects/Path.java +++ b/Objects/Path.java @@ -21,6 +21,7 @@ import javax.imageio.ImageIO; */ public class Path { + private ArrayList points; private ArrayList lines; private Point2D tempPoint; diff --git a/Objects/Stage.java b/Objects/Stage.java index 9827adc..2c3b82c 100644 --- a/Objects/Stage.java +++ b/Objects/Stage.java @@ -2,8 +2,6 @@ package Objects; import java.awt.geom.Point2D; -import Applicatie.DrawObject; - public class Stage extends DrawObject { public Stage(Point2D position) diff --git a/Objects/Toilet.java b/Objects/Toilet.java index f0a0aa8..3a8708a 100644 --- a/Objects/Toilet.java +++ b/Objects/Toilet.java @@ -2,8 +2,6 @@ package Objects; import java.awt.geom.Point2D; -import Applicatie.DrawObject; - public class Toilet extends DrawObject { diff --git a/Objects/Wall.java b/Objects/Wall.java index 6c213d4..e79b3c1 100644 --- a/Objects/Wall.java +++ b/Objects/Wall.java @@ -2,8 +2,6 @@ package Objects; import java.awt.geom.Point2D; -import Applicatie.DrawObject; - public class Wall extends DrawObject { diff --git a/images/sand.jpg b/images/sand.jpg new file mode 100644 index 0000000..94faf79 Binary files /dev/null and b/images/sand.jpg differ