From 4e277e7d5fadc3373aacb4e66e353ab4f4f45e7d Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 12:55:51 +0200 Subject: [PATCH] Added new keyboard controls --- Listeners/Keyboard.java | 36 ++++++++++++++++++++++++++++++++---- Listeners/Mouse.java | 32 ++------------------------------ Objects/DrawObject.java | 4 ++++ Objects/Entrance.java | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 34 deletions(-) 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 a331534..350e58a 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -129,36 +129,8 @@ public class Mouse extends MouseAdapter { 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)); - } - - } - + 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); + } + } }