From a360286c481354c5381196f0e429979c4f2b4eae Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 13:16:12 +0200 Subject: [PATCH 1/5] Stuff --- images/selection.png | Bin 1630 -> 0 bytes images/stageIcon.png | Bin 13848 -> 8224 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/selection.png diff --git a/images/selection.png b/images/selection.png deleted file mode 100644 index 0676738efcc3fe2b1af2314aa52a965a655293d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 zcmeAS@N?(olHy`uVBq!ia0y~yVB8C2Pvc+)lC^J^nFA@t;vjb?hIQv;UIIBR>5jgR z3=A9lx&I`xGB7YR1o(uw0>%Gd5CM{-U^E0qUL_FT^vIy;@)1}n9FP+z~Z?3|DvapKTcT7x8;D3lMs*jj`i%Zub$TIw|RZH^xf?K zvW;$g=XIOD`WmyQa{YJL14pI4R_R?^alLrsv3EeR!1d3QdaG>3v#(^|`tw)rzkJAw z@MUo`t5RQ0T{+4?350Lq?|(o2-ppT)2vJbzovq%Rt0?~-8j7!XMkIfS1~53_&sU|a dy#BS~55u;-IWtQp@A(eO{+_OWF6*2Ung9(JAv^#8 diff --git a/images/stageIcon.png b/images/stageIcon.png index 634d160a01b7ba8861d4d7453344e0eb9962964f..3b56f4e74aef40bdc0530f08d8624aeb0c1627d7 100644 GIT binary patch literal 8224 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 B>DB-M literal 13848 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 From b50c4d2c33dae9d9f153cf3b627033c6a4617c53 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 13:51:01 +0200 Subject: [PATCH 2/5] Objects can no longer move outside field --- Applicatie/Panel.java | 1 + Objects/DrawObject.java | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index 4da85ef..a570dfe 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -612,6 +612,7 @@ public class Panel extends JPanel implements ActionListener this.height = height; paths.clear(); objects.clear(); + visitors.clear(); cameraScale = 1; switch (terrainIndex) { diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java index d07d397..6580c79 100644 --- a/Objects/DrawObject.java +++ b/Objects/DrawObject.java @@ -15,6 +15,7 @@ import java.io.Serializable; import javax.swing.ImageIcon; import Applicatie.Images; +import Applicatie.Panel; public abstract class DrawObject implements Serializable { @@ -232,11 +233,27 @@ public abstract class DrawObject implements Serializable public void setPosition(Point2D position) { + if(position.getX() < -Panel.getFieldWidth()/2) + { + position.setLocation(-Panel.getFieldWidth()/2, position.getY()); + } + if(position.getY() < -Panel.getFieldHeight()/2) + { + position.setLocation(position.getX(), -Panel.getFieldHeight()/2); + } + if(position.getX() > Panel.getFieldWidth()/2 - width) + { + position.setLocation(Panel.getFieldWidth()/2-width, position.getY()); + } + if(position.getY() > Panel.getFieldHeight()/2 - height) + { + position.setLocation(position.getX(), Panel.getFieldHeight()/2-height); + } this.position = position; } public void setPosition(Point2D position, boolean b) { - this.position = position; + setPosition(position); } public double getRotation() From 9d853babdc7f3854cb54c3d9930bad5ae7c62c47 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 16:38:55 +0200 Subject: [PATCH 3/5] Combined Agenda --- Agenda/AddEventPanel.java | 4 +- Agenda/AddStagePanel.java | 4 +- Agenda/Agenda.java | 16 +++-- Agenda/EditEventPanel.java | 4 +- Agenda/EditStagePanel.java | 8 +-- Agenda/Event.java | 10 +-- Agenda/MenuBar.java | 4 +- Agenda/PanelArtSta.java | 2 +- Agenda/Stage.java | 41 +++++++++++++ Agenda/Window.java | 12 +++- Applicatie/ControlPanel.java | 2 +- Applicatie/MenuBar.java | 22 +------ Applicatie/Panel.java | 111 ++++++++-------------------------- Applicatie/SaveLoad.java | 6 +- Applicatie/Visitor.java | 109 +++++++-------------------------- Applicatie/WaypointPopup.java | 73 +++------------------- Listeners/Mouse.java | 47 ++++---------- Objects/DrawObject.java | 19 +++++- Objects/Path.java | 26 +++----- Objects/Stage.java | 17 +----- 20 files changed, 180 insertions(+), 357 deletions(-) create mode 100644 Agenda/Stage.java diff --git a/Agenda/AddEventPanel.java b/Agenda/AddEventPanel.java index 527b862..eb767e6 100644 --- a/Agenda/AddEventPanel.java +++ b/Agenda/AddEventPanel.java @@ -205,9 +205,9 @@ public class AddEventPanel extends JFrame{ String stageName = (String)stage2.getSelectedItem(); - AgendaStage stage = null; + Stage stage = null; - for(AgendaStage s : agenda.getStages()) + for(Stage s : agenda.getStages()) { if (s.getName().equals(stageName)) { diff --git a/Agenda/AddStagePanel.java b/Agenda/AddStagePanel.java index 14cb2cc..d18177e 100644 --- a/Agenda/AddStagePanel.java +++ b/Agenda/AddStagePanel.java @@ -58,7 +58,7 @@ public class AddStagePanel extends JFrame{ String description = descriptionTF.getText(); boolean alreadyExists = false; - for (AgendaStage stage : agenda.getStages()) + for (Stage stage : agenda.getStages()) { if (stage.getName().equals(name)) { @@ -70,7 +70,7 @@ public class AddStagePanel extends JFrame{ } else if ( alreadyExists == false ) { - AgendaStage s = new AgendaStage(name,description); + Stage s = new Stage(name,description); agenda.addStage(s); JOptionPane.showMessageDialog(null, "Stage added!"); setVisible(false); diff --git a/Agenda/Agenda.java b/Agenda/Agenda.java index 71576f7..3d7a9a8 100644 --- a/Agenda/Agenda.java +++ b/Agenda/Agenda.java @@ -17,17 +17,17 @@ public class Agenda implements Serializable { private static final long serialVersionUID = 1; - private ArrayList stages; + private ArrayList stages; private ArrayList events; private ArrayList artists; public Agenda() { - stages = new ArrayList(); + stages = new ArrayList(); events = new ArrayList(); artists = new ArrayList(); } - public void addStage(AgendaStage stage){ + public void addStage(Stage stage){ stages.add(stage); } @@ -47,11 +47,12 @@ public class Agenda implements Serializable { { return artists; } - public ArrayList getStages() + public ArrayList getStages() { return stages; } + /* public void saveAgenda() { JFileChooser fileChooser = new JFileChooser(); @@ -179,7 +180,7 @@ public class Agenda implements Serializable { { boolean exists = false; String name = e.getStage().getName(); - for (AgendaStage s : stages) + for (Stage s : stages) { if ( s.getName().equals(name) ) { exists = true; @@ -202,7 +203,8 @@ public class Agenda implements Serializable { } catch (IOException e) { e.printStackTrace(); } - } + } + */ public void clearAgenda() { @@ -211,10 +213,12 @@ public class Agenda implements Serializable { artists.clear(); } + /* public void fillAllLists() { loadAgenda(); fillStages(); fillArtists(); } + */ } diff --git a/Agenda/EditEventPanel.java b/Agenda/EditEventPanel.java index 9d8c51b..4133503 100644 --- a/Agenda/EditEventPanel.java +++ b/Agenda/EditEventPanel.java @@ -221,9 +221,9 @@ public class EditEventPanel extends JFrame{ String stageName = (String)stage2.getSelectedItem(); - AgendaStage stage = null; + Stage stage = null; - for(AgendaStage s : agenda.getStages()) + for(Stage s : agenda.getStages()) { if (s.getName().equals(stageName)) { diff --git a/Agenda/EditStagePanel.java b/Agenda/EditStagePanel.java index fd5ae50..cf62338 100644 --- a/Agenda/EditStagePanel.java +++ b/Agenda/EditStagePanel.java @@ -18,7 +18,7 @@ public class EditStagePanel extends JFrame{ private static final long serialVersionUID = 1; - public EditStagePanel(Agenda agenda, AgendaStage sta) + public EditStagePanel(Agenda agenda, Stage sta) { super("Stage editscreen!"); setDefaultCloseOperation(HIDE_ON_CLOSE); @@ -59,7 +59,7 @@ public class EditStagePanel extends JFrame{ String description = descriptionTF.getText(); boolean alreadyExists = false; - for (AgendaStage stage : agenda.getStages()) + for (Stage stage : agenda.getStages()) { if (stage.getName().equals(name) && !stage.equals(sta)) { @@ -101,10 +101,10 @@ public class EditStagePanel extends JFrame{ if(JOptionPane.showConfirmDialog(null, "Are you sure you want to remove this stage?", "Remove Stage", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) { - Iterator it = agenda.getStages().iterator(); + Iterator it = agenda.getStages().iterator(); while(it.hasNext()) { - AgendaStage s = it.next(); + Stage s = it.next(); if(s.equals(sta)) { it.remove(); diff --git a/Agenda/Event.java b/Agenda/Event.java index c873c43..cc89824 100644 --- a/Agenda/Event.java +++ b/Agenda/Event.java @@ -19,13 +19,13 @@ public class Event implements Serializable { private int stopHour; private int stopMinute; private Artist artist; - private AgendaStage stage; + private Stage stage; private String description; private int expectedPopularity; public Event(String eventName, int startYear, int startMonth, int startDay, int startHour, int startMinute, int endYear, int endMonth, - int endDay, int endHour, int endMinute, Artist artist, AgendaStage stage, + int endDay, int endHour, int endMinute, Artist artist, Stage stage, String description, int expectedPopularity) { this.eventName = eventName; this.startDate = new GregorianCalendar(startYear, startMonth - 1, @@ -43,7 +43,7 @@ public class Event implements Serializable { } public Event(String eventName, GregorianCalendar startDate, - GregorianCalendar endDate, Artist artist, AgendaStage stage, + GregorianCalendar endDate, Artist artist, Stage stage, String description, int expectedPopularity) { this.eventName = eventName; this.startDate = startDate; @@ -86,7 +86,7 @@ public class Event implements Serializable { return this.description; } - public AgendaStage getStage() { + public Stage getStage() { return this.stage; } @@ -132,7 +132,7 @@ public class Event implements Serializable { this.expectedPopularity = popularity; } - public void setStage(AgendaStage stage) { + public void setStage(Stage stage) { this.stage = stage; } diff --git a/Agenda/MenuBar.java b/Agenda/MenuBar.java index 84f451f..347abf2 100644 --- a/Agenda/MenuBar.java +++ b/Agenda/MenuBar.java @@ -63,7 +63,7 @@ public class MenuBar extends JMenuBar { open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); open.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - w.getAgenda().loadAgenda(); + Applicatie.SaveLoad.load(w.getPanel()); Window.updatePanel(); } }); @@ -72,7 +72,7 @@ public class MenuBar extends JMenuBar { save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); save.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - w.getAgenda().saveAgenda(); + Applicatie.SaveLoad.save(w.getPanel()); Window.updatePanel(); } }); diff --git a/Agenda/PanelArtSta.java b/Agenda/PanelArtSta.java index b695bd0..fa54cb1 100644 --- a/Agenda/PanelArtSta.java +++ b/Agenda/PanelArtSta.java @@ -105,7 +105,7 @@ public class PanelArtSta extends JPanel implements Panel{ else { dataStage = new Object[1]; - dataStage[0] = new AgendaStage("Geen Stages", "Geen Stages"); + dataStage[0] = new Stage("Geen Stages", "Geen Stages"); stages.setEnabled(false); } } diff --git a/Agenda/Stage.java b/Agenda/Stage.java new file mode 100644 index 0000000..301a11b --- /dev/null +++ b/Agenda/Stage.java @@ -0,0 +1,41 @@ +package Agenda; +import java.io.Serializable; + +public class Stage implements Serializable { + + private static final long serialVersionUID = 1; + + private String name; + private String description; + + public Stage(String name, String description) + { + this.name = name; + this.description = description; + } + + public String getName() + { + return this.name; + } + + public String getDescription() + { + return this.description; + } + + public void setDescription(String description) + { + this.description = description; + } + + public void setName(String name) + { + this.name = name; + } + + public String toString() + { + return name; + } +} diff --git a/Agenda/Window.java b/Agenda/Window.java index fef9a21..9bb7959 100644 --- a/Agenda/Window.java +++ b/Agenda/Window.java @@ -36,14 +36,16 @@ public class Window extends JFrame { private static GregorianCalendar date; private static Agenda agenda; private static String currentPanel = "table"; + private Applicatie.Panel ap; - public Window() + public Window(Applicatie.Panel ap) { /* * Initialize window */ super("Agenda"); - agenda = new Agenda(); + this.ap = ap; + agenda = ap.getAgenda(); setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter() { @@ -231,6 +233,12 @@ public class Window extends JFrame { public void setAgenda(Agenda a) { agenda = a; + ap.setAgenda(a); + } + + public Applicatie.Panel getPanel() + { + return ap; } diff --git a/Applicatie/ControlPanel.java b/Applicatie/ControlPanel.java index d78de55..b371fb7 100644 --- a/Applicatie/ControlPanel.java +++ b/Applicatie/ControlPanel.java @@ -115,7 +115,7 @@ public class ControlPanel extends JPanel peopleButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - p.addVisitors(); + p.addVisitors(1); } }); peoplePanel.add(peopleButton); diff --git a/Applicatie/MenuBar.java b/Applicatie/MenuBar.java index 3147952..debad55 100644 --- a/Applicatie/MenuBar.java +++ b/Applicatie/MenuBar.java @@ -28,16 +28,6 @@ public class MenuBar extends JMenuBar }); file.add(item); - JMenuItem agenda = new JMenuItem("Open Agenda"); - agenda.addActionListener(new ActionListener() - { - public void actionPerformed(ActionEvent e) - { - new Agenda.Window(); - } - }); - file.add(agenda); - item = new JMenuItem("Open"); item.addActionListener(new ActionListener() { @@ -60,22 +50,12 @@ public class MenuBar extends JMenuBar file.addSeparator(); - item = new JMenuItem("Load agenda"); - item.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - w.getPanel().agenda.loadAgenda(); - } - }); - file.add(item); - item = new JMenuItem("Agenda"); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - new Agenda.Window(); + new Agenda.Window(w.getPanel()); } }); file.add(item); diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index a0d2451..8ba48a7 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -23,12 +23,10 @@ import java.util.GregorianCalendar; import java.util.Iterator; import javax.imageio.ImageIO; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Timer; import Agenda.Agenda; -import Agenda.AgendaStage; import Listeners.Mouse; import Listeners.MouseMotion; import Listeners.MouseWheel; @@ -73,7 +71,7 @@ public class Panel extends JPanel implements ActionListener Point lastMousePosition = new Point(0, 0); Point2D selectionPosition = new Point(0, 0); Images images = new Images(); - Timer t; + javax.swing.Timer t; SimpleDateFormat formatter; GregorianCalendar date; @@ -146,8 +144,9 @@ public class Panel extends JPanel implements ActionListener addMouseMotionListener(new MouseMotion(this)); addMouseWheelListener(new MouseWheel(this)); - + addFocusListener(new WindowFocusListener(this)); + t = new Timer(1000 / 10, this); } @@ -167,26 +166,7 @@ public class Panel extends JPanel implements ActionListener switch (index) { case 0: - ArrayList stages = agenda.getStages(); - Object[] s = new Object[stages.size()]; - AgendaStage stage = null; - if (stages.size() != 0) - { - for (int i = 0; i < stages.size(); i++) - { - s[i] = stages.get(i); - } - - stage = (AgendaStage) JOptionPane.showInputDialog(null, "Select the right Stage", "Select Stage", JOptionPane.PLAIN_MESSAGE, null, s, "stage"); - } - if (stage != null) - { - return new Stage(null, stage); - } - else - { - return null; - } + return new Stage(null); case 1: return new Toilet(null); case 2: @@ -211,18 +191,6 @@ public class Panel extends JPanel implements ActionListener { waypoints.add(w); } - - public Waypoint getWaypoint(int i) - { - for(Waypoint w : waypoints) - { - if(w.getSelf() == i) - { - return w; - } - } - return null; - } public ArrayList getWaypoints() { @@ -231,27 +199,14 @@ public class Panel extends JPanel implements ActionListener public void addVisitors() { - ArrayList entrances = new ArrayList<>(); - for(DrawObject object : objects) { - if(object instanceof Entrance) { - entrances.add(object); - } - } - if(!entrances.isEmpty()) { - DrawObject entrance = entrances.get((int) Math.floor(Math.random()*entrances.size())); - Point point = new Point((int)entrance.getPosition().getX(),(int)entrance.getPosition().getY()); - visitors.add(new Visitor("visitor",point, agenda, objects)); - } - else { - JOptionPane.showMessageDialog(this, "You don't have an entrance"); - } + visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); } public void addVisitors(int count) { for (int i = 0; i < count; i++) { - addVisitors(); + visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); } } @@ -563,27 +518,13 @@ public class Panel extends JPanel implements ActionListener { if (path.containsPoint(point)) { - setcurrentPath(path); setClickedOption("Path"); - return true; } } return false; } - - public Path getClickedPath(Point2D point) - { - for (Path path : paths) - { - if (path.containsPoint(point)) - { - return path; - } - } - return null; - } /** * Remove a path from the list. @@ -616,17 +557,17 @@ public class Panel extends JPanel implements ActionListener { this.agenda = agenda; } - + public static int getFieldWidth() { return width; } - + public static int getFieldHeight() { return height; } - + @Override public void actionPerformed(ActionEvent e) { @@ -642,7 +583,7 @@ public class Panel extends JPanel implements ActionListener for (Visitor v : visitors) { - v.update(objects, currentTime, visitors, paths, this); + v.update(objects, currentTime, visitors, paths); } repaint(); @@ -669,25 +610,25 @@ public class Panel extends JPanel implements ActionListener this.height = height; paths.clear(); objects.clear(); + visitors.clear(); cameraScale = 1; switch (terrainIndex) { - 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; - + 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/SaveLoad.java b/Applicatie/SaveLoad.java index a1e22c5..ecc541f 100644 --- a/Applicatie/SaveLoad.java +++ b/Applicatie/SaveLoad.java @@ -11,6 +11,7 @@ import javax.swing.JFileChooser; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; +import Agenda.Agenda; import Objects.DrawObject; public class SaveLoad { @@ -66,6 +67,7 @@ public class SaveLoad { try { FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos); + oos.writeObject(panel.getAgenda()); for (DrawObject object : panel.objects) { oos.writeObject(object); } @@ -124,8 +126,10 @@ public class SaveLoad { ois = new ObjectInputStream(fis); Object object; - object = ois.readObject(); + Agenda a = (Agenda) ois.readObject(); + panel.setAgenda(a); try { + object = ois.readObject(); panel.clearObjects(); while (object != null) { panel.objects.add((DrawObject) object); diff --git a/Applicatie/Visitor.java b/Applicatie/Visitor.java index 2cbdd43..91378e4 100644 --- a/Applicatie/Visitor.java +++ b/Applicatie/Visitor.java @@ -28,7 +28,6 @@ public class Visitor Agenda agenda; ArrayList objects; int target; - int finalTarget; public Visitor(String filename, Point2D position, Agenda agenda, ArrayList objects) { @@ -42,8 +41,7 @@ public class Visitor this.objects = objects; fillActions(); System.out.println(actions.size()); - target = 1; - finalTarget = 2; + target = 0; } public void draw(Graphics2D g2) @@ -65,17 +63,17 @@ public class Visitor public DrawObject getEntrance() { - for (DrawObject o : objects) + for(DrawObject o : objects) { - if (o instanceof Entrance) + if(o instanceof Entrance) { return o; } } return null; } - - public void update(ArrayList objects, int currentTime, ArrayList visitors, ArrayList paths, Panel panel) + + public void update(ArrayList objects, int currentTime, ArrayList visitors, ArrayList paths) { DrawObject target = getEntrance(); for (Action a : actions) @@ -87,76 +85,7 @@ public class Visitor } - // moveToTarget(target, objects, visitors, paths); - move(target, panel); - } - - public void move(DrawObject tar, Panel panel) - { - Point2D targetPoint = panel.getWaypoint(target).getPosition(); - - double newRot = Math.atan2(targetPoint.getY() - position.getY(), targetPoint.getX() - position.getX()); - - int difx = (int) (targetPoint.getX() - position.getX()); - int dify = (int) (targetPoint.getY() - position.getY()); - int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); - - if (rotation > newRot && distance > 10) - { - rotation -= 0.15; - } - else if (rotation < newRot && distance > 10) - { - rotation += 0.15; - } - - Point2D oldPosition = position; - - // face direction - float directionX = (float) Math.cos(rotation); - float directionY = (float) Math.sin(rotation); - - if (distance > 10) - { - position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); - } - - boolean possible = true; - for (DrawObject object : objects) - { - if (object instanceof Entrance || object instanceof Waypoint) - { - continue; - } - if (hitTest(object)) - { - possible = false; - } - } - if (possible == false) - { - position = oldPosition; - rotation += 0.2; - } - if(checkIfOnWaypoint(panel)) - { - for(int i : panel.getWaypoint(target).getOptions()) - { - if(i == finalTarget) - { - target = finalTarget; - } - } - } - } - - public boolean checkIfOnWaypoint(Panel panel) - { - if (panel.getWaypoint(target).contains(position)) - { - return true; - } - return false; + moveToTarget(target, objects, visitors, paths); } public void moveToTarget(DrawObject target, ArrayList objects, ArrayList visitors, ArrayList paths) @@ -171,7 +100,7 @@ public class Visitor break; } Shape containsShape = p.containsPointShape(position); - if (containsShape != null) + if(containsShape != null) { tar = new Point2D.Double(containsShape.getBounds().getCenterX(), containsShape.getBounds().getCenterY()); } @@ -279,23 +208,27 @@ public class Visitor } } lastShape = values.get(lastdistance); - + Point2D.Double target2 = new Point2D.Double(lastShape.getBounds().getCenterX(), lastShape.getBounds().getCenterY()); - + double newRot = Math.atan2(target2.getY() - position.getY(), target2.getX() - position.getX()); int difx = (int) (target2.getX() - position.getX()); int dify = (int) (target2.getY() - position.getY()); int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); - if (rotation > newRot && distance > 10) - { - rotation -= 0.15; - } - else if (rotation < newRot && distance > 10) - { - rotation += 0.15; - } + System.out.println(rotation); + System.out.println(newRot); + System.out.println("--------------"); +// if (rotation > newRot && distance > 10) +// { +// rotation -= 0.15; +// } +// else if (rotation < newRot && distance > 10) +// { +// rotation += 0.15; +// } + rotation = newRot; Point2D oldPosition = position; diff --git a/Applicatie/WaypointPopup.java b/Applicatie/WaypointPopup.java index dee0671..f5e88cf 100644 --- a/Applicatie/WaypointPopup.java +++ b/Applicatie/WaypointPopup.java @@ -1,13 +1,10 @@ package Applicatie; import java.awt.BorderLayout; -import java.awt.Dimension; import java.awt.FlowLayout; -import java.awt.Font; +import java.awt.GridLayout; 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.JFrame; import javax.swing.JLabel; @@ -19,68 +16,25 @@ import Objects.DrawObject; public class WaypointPopup extends JFrame { private static final long serialVersionUID = 1; - private JLabel title; - public WaypointPopup(DrawObject w, Panel panel) + public WaypointPopup(DrawObject w) { - super("Edit WayPoint"); + super("Artist editscreen!"); Waypoint wp = (Waypoint) w; setDefaultCloseOperation(HIDE_ON_CLOSE); JPanel content = new JPanel(new BorderLayout()); - JPanel north = new JPanel(); - if(wp.getSelf() == 0) - { - title = new JLabel("Edit WayPoint"); - } - else - { - title = new JLabel("Edit WayPoint " + wp.getSelf()); - } - title.setFont(new Font("Dialog", Font.BOLD, 24)); - north.add(title); - content.add(north, BorderLayout.NORTH); - JPanel center = new JPanel(new FlowLayout()); - JPanel row1 = new JPanel(); - row1.setLayout(new BoxLayout(row1, BoxLayout.Y_AXIS)); - JPanel row2 = new JPanel(); - row2.setLayout(new BoxLayout(row2, BoxLayout.Y_AXIS)); - JPanel south = new JPanel(); + JPanel south = new JPanel(new FlowLayout()); + JPanel center = new JPanel(new GridLayout(5,2)); content.add(south, BorderLayout.SOUTH); content.add(center, BorderLayout.CENTER); - center.add(row1); - center.add(row2); - - JPanel empty = new JPanel(); - empty.add(Box.createRigidArea(new Dimension(0, 20))); - row2.add(empty); JPanel panel1 = new JPanel(); JLabel name = new JLabel("Waypoint"); - name.setFont(new Font("Dialog", Font.PLAIN, 20)); panel1.add(name); - row1.add(panel1); + center.add(panel1); - JTextField tf = new JTextField(10); - row2.add(tf); - - JPanel panel2 = new JPanel(); - JLabel options = new JLabel("Options"); - options.setFont(new Font("Dialog", Font.PLAIN, 20)); - panel2.add(options); - row1.add(panel2); - - JPanel empty2 = new JPanel(); - empty2.add(Box.createRigidArea(new Dimension(0, 5))); - row2.add(empty2); - - JTextField tx = new JTextField(8); - row2.add(tx); - - JPanel help = new JPanel(); - JLabel example = new JLabel("example: '1-2-3'"); - example.setFont(new Font("Dialog", Font.PLAIN, 12)); - help.add(example); - row2.add(help); + JTextField tf = new JTextField(5); + center.add(tf); JButton edit = new JButton("Done"); edit.addActionListener(new ActionListener() @@ -90,23 +44,14 @@ public class WaypointPopup extends JFrame { public void actionPerformed(ActionEvent e) { wp.setSelf(Integer.valueOf(tf.getText())); - panel.addWaypoint(wp); dispose(); - String options[] = tx.getText().split("-"); - int ioptions[] = new int[options.length]; - for(int i = 0; i < options.length; i++) - { - ioptions[i] = Integer.valueOf(options[i]); - } - wp.setOptions(ioptions); - } }); south.add(edit); setContentPane(content); setVisible(true); - setSize(300,250); + setSize(500,320); } } diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index 95f38c5..f77a8f6 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -10,8 +10,6 @@ import java.awt.image.BufferedImage; import javax.swing.SwingUtilities; import Applicatie.Panel; -import Applicatie.PathPopup; - import Applicatie.Waypoint; import Applicatie.WaypointPopup; import Objects.DrawObject; @@ -47,17 +45,14 @@ public class Mouse extends MouseAdapter if (e.getX() >= panel.getScrollfactor() && e.getX() < last + image.getWidth() + panel.getScrollfactor()) { DrawObject tempDrawObj = panel.createNewDrawObject(i); - if (tempDrawObj != null) - { - tempDrawObj.setPosition(clickPoint); - if (!panel.getObjects().isEmpty()) - panel.clearObjectSelection(); - panel.setDragObject(tempDrawObj); - panel.getDragObject().setSelected(true); - panel.getPP().setSelected(tempDrawObj); - panel.setSelectedObject(tempDrawObj); - selectedObject = tempDrawObj; - } + tempDrawObj.setPosition(clickPoint); + if (!panel.getObjects().isEmpty()) + panel.clearObjectSelection(); + panel.setDragObject(tempDrawObj); + panel.getDragObject().setSelected(true); + panel.getPP().setSelected(tempDrawObj); + panel.setSelectedObject(tempDrawObj); + selectedObject = tempDrawObj; break; } i++; @@ -76,10 +71,8 @@ public class Mouse extends MouseAdapter { if (SwingUtilities.isRightMouseButton(e)) { - if (o instanceof Waypoint) - { + if(o instanceof Waypoint){ new WaypointPopup(o); - } } if (o == selectedObject) @@ -125,19 +118,7 @@ public class Mouse extends MouseAdapter } } - Path clickedPath = panel.getClickedPath(clickPoint); - if (clickedPath != null) - { - if (SwingUtilities.isRightMouseButton(e)) - { - new PathPopup(clickedPath, panel); - } - } - else - { - panel.checkPath(clickPoint); - } - + panel.checkPath(clickPoint); } if (panel.getDragObject() == null && selectedObject != null) { @@ -149,19 +130,15 @@ public class Mouse extends MouseAdapter } else { // Making path. - panel.getCurrentPath().addPoint(new Point2D.Double(clickPoint.getX(), clickPoint.getY())); - } panel.repaint(); } public void mouseReleased(MouseEvent e) { - if (panel.getDragObject() != null) - { - if (panel.getDragObject().getRectangleColor() != Color.RED) - { + if(panel.getDragObject() != null) { + if(panel.getDragObject().getRectangleColor() != Color.RED) { panel.getDragObject().setPosition(panel.getDragObject().getPosition(), true); panel.getPP().update(); panel.setDragObject(null); diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java index d07d397..6580c79 100644 --- a/Objects/DrawObject.java +++ b/Objects/DrawObject.java @@ -15,6 +15,7 @@ import java.io.Serializable; import javax.swing.ImageIcon; import Applicatie.Images; +import Applicatie.Panel; public abstract class DrawObject implements Serializable { @@ -232,11 +233,27 @@ public abstract class DrawObject implements Serializable public void setPosition(Point2D position) { + if(position.getX() < -Panel.getFieldWidth()/2) + { + position.setLocation(-Panel.getFieldWidth()/2, position.getY()); + } + if(position.getY() < -Panel.getFieldHeight()/2) + { + position.setLocation(position.getX(), -Panel.getFieldHeight()/2); + } + if(position.getX() > Panel.getFieldWidth()/2 - width) + { + position.setLocation(Panel.getFieldWidth()/2-width, position.getY()); + } + if(position.getY() > Panel.getFieldHeight()/2 - height) + { + position.setLocation(position.getX(), Panel.getFieldHeight()/2-height); + } this.position = position; } public void setPosition(Point2D position, boolean b) { - this.position = position; + setPosition(position); } public double getRotation() diff --git a/Objects/Path.java b/Objects/Path.java index 010303b..15b3de0 100644 --- a/Objects/Path.java +++ b/Objects/Path.java @@ -14,7 +14,6 @@ import java.util.ArrayList; import javax.imageio.ImageIO; -import Applicatie.Panel; import Applicatie.Waypoint; /** @@ -96,7 +95,7 @@ public class Path } return null; } - + /** * Check if one of the lines contains the given point. * @@ -115,13 +114,12 @@ public class Path } return false; } - - + public boolean intersectsRect(Rectangle2D rect) { - for (Shape line : getPath()) + for(Shape line : getPath()) { - if (line.intersects(rect)) + if(line.intersects(rect)) { return true; } @@ -146,23 +144,13 @@ public class Path lines.add(stroke.createStrokedShape(line)); } return lines; - } - - public void addWaypoint(int i, Panel panel) + + public void addWaypoint(Waypoint w) { - for (Waypoint w : panel.getWaypoints()) - { - if (w.getSelf() == i) - { - waypoints.add(w); - return; - } - } - + waypoints.add(w); } - /** * Add a point to the path. * diff --git a/Objects/Stage.java b/Objects/Stage.java index 7252c15..c006d71 100644 --- a/Objects/Stage.java +++ b/Objects/Stage.java @@ -2,16 +2,11 @@ package Objects; import java.awt.geom.Point2D; -import Agenda.AgendaStage; - public class Stage extends DrawObject { - AgendaStage stage; - - public Stage(Point2D position, AgendaStage st) + public Stage(Point2D position) { super("stage", position); - stage = st; } @Override @@ -20,14 +15,4 @@ public class Stage extends DrawObject return "Stage"; } - public AgendaStage getStage() - { - return stage; - } - - public void setStage(AgendaStage stage) - { - this.stage = stage; - } - } From c3973cc4e40c63b886ec5513b7d90c5e420177a0 Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 20:57:06 +0200 Subject: [PATCH 4/5] Fixed stuff --- Agenda/AddEventPanel.java | 4 +- Agenda/AddStagePanel.java | 4 +- Agenda/Agenda.java | 22 ++- Agenda/EditEventPanel.java | 4 +- Agenda/EditStagePanel.java | 8 +- Agenda/Event.java | 10 +- Agenda/MenuBar.java | 2 +- Agenda/PanelArtSta.java | 2 +- Agenda/Stage.java | 41 ----- Agenda/Window.java | 5 +- Applicatie/ControlPanel.java | 2 +- Applicatie/MenuBar.java | 12 ++ Applicatie/Panel.java | 111 ++++++++++--- Applicatie/SaveLoad.java | 2 +- Applicatie/Visitor.java | 288 ++++++++++++++++++++++++++-------- Applicatie/WaypointPopup.java | 98 ++++++++++-- Listeners/Mouse.java | 49 ++++-- Objects/DrawObject.java | 1 + Objects/Path.java | 26 ++- Objects/Stage.java | 17 +- 20 files changed, 519 insertions(+), 189 deletions(-) delete mode 100644 Agenda/Stage.java diff --git a/Agenda/AddEventPanel.java b/Agenda/AddEventPanel.java index eb767e6..527b862 100644 --- a/Agenda/AddEventPanel.java +++ b/Agenda/AddEventPanel.java @@ -205,9 +205,9 @@ public class AddEventPanel extends JFrame{ String stageName = (String)stage2.getSelectedItem(); - Stage stage = null; + AgendaStage stage = null; - for(Stage s : agenda.getStages()) + for(AgendaStage s : agenda.getStages()) { if (s.getName().equals(stageName)) { diff --git a/Agenda/AddStagePanel.java b/Agenda/AddStagePanel.java index d18177e..14cb2cc 100644 --- a/Agenda/AddStagePanel.java +++ b/Agenda/AddStagePanel.java @@ -58,7 +58,7 @@ public class AddStagePanel extends JFrame{ String description = descriptionTF.getText(); boolean alreadyExists = false; - for (Stage stage : agenda.getStages()) + for (AgendaStage stage : agenda.getStages()) { if (stage.getName().equals(name)) { @@ -70,7 +70,7 @@ public class AddStagePanel extends JFrame{ } else if ( alreadyExists == false ) { - Stage s = new Stage(name,description); + AgendaStage s = new AgendaStage(name,description); agenda.addStage(s); JOptionPane.showMessageDialog(null, "Stage added!"); setVisible(false); diff --git a/Agenda/Agenda.java b/Agenda/Agenda.java index 3d7a9a8..8558743 100644 --- a/Agenda/Agenda.java +++ b/Agenda/Agenda.java @@ -17,17 +17,17 @@ public class Agenda implements Serializable { private static final long serialVersionUID = 1; - private ArrayList stages; + private ArrayList stages; private ArrayList events; private ArrayList artists; public Agenda() { - stages = new ArrayList(); + stages = new ArrayList(); events = new ArrayList(); artists = new ArrayList(); } - public void addStage(Stage stage){ + public void addStage(AgendaStage stage){ stages.add(stage); } @@ -47,10 +47,22 @@ public class Agenda implements Serializable { { return artists; } - public ArrayList getStages() + public ArrayList getStages() { return stages; } + public ArrayList eventsForStage(AgendaStage st) + { + ArrayList stageEvents = new ArrayList(); + for(Event e: events) + { + if(e.getStage() == st) + { + stageEvents.add(e); + } + } + return stageEvents; + } /* public void saveAgenda() @@ -221,4 +233,4 @@ public class Agenda implements Serializable { fillArtists(); } */ -} +} \ No newline at end of file diff --git a/Agenda/EditEventPanel.java b/Agenda/EditEventPanel.java index 4133503..9d8c51b 100644 --- a/Agenda/EditEventPanel.java +++ b/Agenda/EditEventPanel.java @@ -221,9 +221,9 @@ public class EditEventPanel extends JFrame{ String stageName = (String)stage2.getSelectedItem(); - Stage stage = null; + AgendaStage stage = null; - for(Stage s : agenda.getStages()) + for(AgendaStage s : agenda.getStages()) { if (s.getName().equals(stageName)) { diff --git a/Agenda/EditStagePanel.java b/Agenda/EditStagePanel.java index cf62338..fd5ae50 100644 --- a/Agenda/EditStagePanel.java +++ b/Agenda/EditStagePanel.java @@ -18,7 +18,7 @@ public class EditStagePanel extends JFrame{ private static final long serialVersionUID = 1; - public EditStagePanel(Agenda agenda, Stage sta) + public EditStagePanel(Agenda agenda, AgendaStage sta) { super("Stage editscreen!"); setDefaultCloseOperation(HIDE_ON_CLOSE); @@ -59,7 +59,7 @@ public class EditStagePanel extends JFrame{ String description = descriptionTF.getText(); boolean alreadyExists = false; - for (Stage stage : agenda.getStages()) + for (AgendaStage stage : agenda.getStages()) { if (stage.getName().equals(name) && !stage.equals(sta)) { @@ -101,10 +101,10 @@ public class EditStagePanel extends JFrame{ if(JOptionPane.showConfirmDialog(null, "Are you sure you want to remove this stage?", "Remove Stage", JOptionPane.YES_NO_OPTION) == JOptionPane.OK_OPTION) { - Iterator it = agenda.getStages().iterator(); + Iterator it = agenda.getStages().iterator(); while(it.hasNext()) { - Stage s = it.next(); + AgendaStage s = it.next(); if(s.equals(sta)) { it.remove(); diff --git a/Agenda/Event.java b/Agenda/Event.java index 44411f2..baf2fd4 100644 --- a/Agenda/Event.java +++ b/Agenda/Event.java @@ -19,13 +19,13 @@ public class Event implements Serializable { private int stopHour; private int stopMinute; private Artist artist; - private Stage stage; + private AgendaStage stage; private String description; private int expectedPopularity; public Event(String eventName, int startYear, int startMonth, int startDay, int startHour, int startMinute, int endYear, int endMonth, - int endDay, int endHour, int endMinute, Artist artist, Stage stage, + int endDay, int endHour, int endMinute, Artist artist, AgendaStage stage, String description, int expectedPopularity) { this.eventName = eventName; this.startDate = new GregorianCalendar(startYear, startMonth - 1, @@ -43,7 +43,7 @@ public class Event implements Serializable { } public Event(String eventName, GregorianCalendar startDate, - GregorianCalendar endDate, Artist artist, Stage stage, + GregorianCalendar endDate, Artist artist, AgendaStage stage, String description, int expectedPopularity) { this.eventName = eventName; this.startDate = startDate; @@ -86,7 +86,7 @@ public class Event implements Serializable { return this.description; } - public Stage getStage() { + public AgendaStage getStage() { return this.stage; } @@ -132,7 +132,7 @@ public class Event implements Serializable { this.expectedPopularity = popularity; } - public void setStage(Stage stage) { + public void setStage(AgendaStage stage) { this.stage = stage; } diff --git a/Agenda/MenuBar.java b/Agenda/MenuBar.java index 347abf2..ebd8825 100644 --- a/Agenda/MenuBar.java +++ b/Agenda/MenuBar.java @@ -133,4 +133,4 @@ public class MenuBar extends JMenuBar { view.add(art_sta); add(view); } -} +} \ No newline at end of file diff --git a/Agenda/PanelArtSta.java b/Agenda/PanelArtSta.java index fa54cb1..b695bd0 100644 --- a/Agenda/PanelArtSta.java +++ b/Agenda/PanelArtSta.java @@ -105,7 +105,7 @@ public class PanelArtSta extends JPanel implements Panel{ else { dataStage = new Object[1]; - dataStage[0] = new Stage("Geen Stages", "Geen Stages"); + dataStage[0] = new AgendaStage("Geen Stages", "Geen Stages"); stages.setEnabled(false); } } diff --git a/Agenda/Stage.java b/Agenda/Stage.java deleted file mode 100644 index 301a11b..0000000 --- a/Agenda/Stage.java +++ /dev/null @@ -1,41 +0,0 @@ -package Agenda; -import java.io.Serializable; - -public class Stage implements Serializable { - - private static final long serialVersionUID = 1; - - private String name; - private String description; - - public Stage(String name, String description) - { - this.name = name; - this.description = description; - } - - public String getName() - { - return this.name; - } - - public String getDescription() - { - return this.description; - } - - public void setDescription(String description) - { - this.description = description; - } - - public void setName(String name) - { - this.name = name; - } - - public String toString() - { - return name; - } -} diff --git a/Agenda/Window.java b/Agenda/Window.java index 9bb7959..f7c4ea4 100644 --- a/Agenda/Window.java +++ b/Agenda/Window.java @@ -1,6 +1,5 @@ package Agenda; - import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -183,7 +182,7 @@ public class Window extends JFrame { } }); } - + public static void changePanel(String panel) { currentPanel = panel; @@ -242,4 +241,4 @@ public class Window extends JFrame { } -} +} \ No newline at end of file diff --git a/Applicatie/ControlPanel.java b/Applicatie/ControlPanel.java index b371fb7..d78de55 100644 --- a/Applicatie/ControlPanel.java +++ b/Applicatie/ControlPanel.java @@ -115,7 +115,7 @@ public class ControlPanel extends JPanel peopleButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { - p.addVisitors(1); + p.addVisitors(); } }); peoplePanel.add(peopleButton); diff --git a/Applicatie/MenuBar.java b/Applicatie/MenuBar.java index debad55..1c0870f 100644 --- a/Applicatie/MenuBar.java +++ b/Applicatie/MenuBar.java @@ -28,6 +28,18 @@ public class MenuBar extends JMenuBar }); file.add(item); + JMenuItem agenda = new JMenuItem("Open Agenda"); + agenda.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + new Agenda.Window(w.getPanel()); + } + }); + file.add(agenda); + + file.addSeparator(); + item = new JMenuItem("Open"); item.addActionListener(new ActionListener() { diff --git a/Applicatie/Panel.java b/Applicatie/Panel.java index 8ba48a7..d69710b 100644 --- a/Applicatie/Panel.java +++ b/Applicatie/Panel.java @@ -23,10 +23,12 @@ import java.util.GregorianCalendar; import java.util.Iterator; import javax.imageio.ImageIO; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.Timer; import Agenda.Agenda; +import Agenda.AgendaStage; import Listeners.Mouse; import Listeners.MouseMotion; import Listeners.MouseWheel; @@ -71,7 +73,7 @@ public class Panel extends JPanel implements ActionListener Point lastMousePosition = new Point(0, 0); Point2D selectionPosition = new Point(0, 0); Images images = new Images(); - javax.swing.Timer t; + Timer t; SimpleDateFormat formatter; GregorianCalendar date; @@ -144,9 +146,8 @@ public class Panel extends JPanel implements ActionListener addMouseMotionListener(new MouseMotion(this)); addMouseWheelListener(new MouseWheel(this)); - + addFocusListener(new WindowFocusListener(this)); - t = new Timer(1000 / 10, this); } @@ -166,7 +167,26 @@ public class Panel extends JPanel implements ActionListener switch (index) { case 0: - return new Stage(null); + ArrayList stages = agenda.getStages(); + Object[] s = new Object[stages.size()]; + AgendaStage stage = null; + if (stages.size() != 0) + { + for (int i = 0; i < stages.size(); i++) + { + s[i] = stages.get(i); + } + + stage = (AgendaStage) JOptionPane.showInputDialog(null, "Select the right Stage", "Select Stage", JOptionPane.PLAIN_MESSAGE, null, s, "stage"); + } + if (stage != null) + { + return new Stage(null, stage); + } + else + { + return null; + } case 1: return new Toilet(null); case 2: @@ -191,6 +211,18 @@ public class Panel extends JPanel implements ActionListener { waypoints.add(w); } + + public Waypoint getWaypoint(int i) + { + for(Waypoint w : waypoints) + { + if(w.getSelf() == i) + { + return w; + } + } + return null; + } public ArrayList getWaypoints() { @@ -199,14 +231,27 @@ public class Panel extends JPanel implements ActionListener public void addVisitors() { - visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); + ArrayList entrances = new ArrayList<>(); + for(DrawObject object : objects) { + if(object instanceof Entrance) { + entrances.add(object); + } + } + if(!entrances.isEmpty()) { + DrawObject entrance = entrances.get((int) Math.floor(Math.random()*entrances.size())); + Point point = new Point((int)entrance.getPosition().getX(),(int)entrance.getPosition().getY()); + visitors.add(new Visitor("visitor",point, agenda, objects, waypoints, date)); + } + else { + JOptionPane.showMessageDialog(this, "You don't have an entrance"); + } } public void addVisitors(int count) { for (int i = 0; i < count; i++) { - visitors.add(new Visitor("visitor", new Point(100, 300), agenda, objects)); + addVisitors(); } } @@ -518,13 +563,27 @@ public class Panel extends JPanel implements ActionListener { if (path.containsPoint(point)) { + setcurrentPath(path); setClickedOption("Path"); + return true; } } return false; } + + public Path getClickedPath(Point2D point) + { + for (Path path : paths) + { + if (path.containsPoint(point)) + { + return path; + } + } + return null; + } /** * Remove a path from the list. @@ -557,17 +616,17 @@ public class Panel extends JPanel implements ActionListener { this.agenda = agenda; } - + public static int getFieldWidth() { return width; } - + public static int getFieldHeight() { return height; } - + @Override public void actionPerformed(ActionEvent e) { @@ -583,7 +642,7 @@ public class Panel extends JPanel implements ActionListener for (Visitor v : visitors) { - v.update(objects, currentTime, visitors, paths); + v.update(objects, currentTime, visitors, paths, this); } repaint(); @@ -610,25 +669,25 @@ public class Panel extends JPanel implements ActionListener this.height = height; paths.clear(); objects.clear(); - visitors.clear(); cameraScale = 1; switch (terrainIndex) { - 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; + 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/SaveLoad.java b/Applicatie/SaveLoad.java index ecc541f..ae7f932 100644 --- a/Applicatie/SaveLoad.java +++ b/Applicatie/SaveLoad.java @@ -145,4 +145,4 @@ public class SaveLoad { -} +} \ No newline at end of file diff --git a/Applicatie/Visitor.java b/Applicatie/Visitor.java index 91378e4..bf3ec7f 100644 --- a/Applicatie/Visitor.java +++ b/Applicatie/Visitor.java @@ -5,8 +5,10 @@ import java.awt.Image; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.AffineTransform; +import java.awt.geom.Area; import java.awt.geom.Point2D; import java.util.ArrayList; +import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Map; @@ -15,6 +17,7 @@ import Agenda.Event; import Objects.DrawObject; import Objects.Entrance; import Objects.Path; +import Objects.Stage; public class Visitor { @@ -27,21 +30,28 @@ public class Visitor ArrayList actions; Agenda agenda; ArrayList objects; - int target; - public Visitor(String filename, Point2D position, Agenda agenda, ArrayList objects) + ArrayList waypoints; + GregorianCalendar date; + int target; + int finalTarget; + + public Visitor(String filename, Point2D position, Agenda agenda, ArrayList objects, ArrayList waypoints, GregorianCalendar date) + { this.position = position; this.filename = filename; this.rotation = 0; this.speed = 1 + Math.random() * 4; + this.waypoints = waypoints; + this.date = date; scale = 1; actions = new ArrayList(); this.agenda = agenda; this.objects = objects; fillActions(); - System.out.println(actions.size()); - target = 0; + target = 1; + finalTarget = 0; } public void draw(Graphics2D g2) @@ -63,29 +73,119 @@ public class Visitor public DrawObject getEntrance() { - for(DrawObject o : objects) + for (DrawObject o : objects) { - if(o instanceof Entrance) + if (o instanceof Entrance) { return o; } } return null; } - - public void update(ArrayList objects, int currentTime, ArrayList visitors, ArrayList paths) + + public void update(ArrayList objects, int currentTime, ArrayList visitors, ArrayList paths, Panel panel) { DrawObject target = getEntrance(); for (Action a : actions) { if (currentTime >= a.getStartTime() && currentTime < a.getStoptime()) { - target = a.getTargetObject(); + this.finalTarget = a.getWaypoint().getSelf(); } } + System.out.println(actions.size()); - moveToTarget(target, objects, visitors, paths); + // moveToTarget(target, objects, visitors, paths); + move(target, panel); + } + + public void move(DrawObject tar, Panel panel) + { + Point2D targetPoint = panel.getWaypoint(target).getPosition(); + + double newRot = Math.atan2(targetPoint.getY() - position.getY(), targetPoint.getX() - position.getX()); + + int difx = (int) (targetPoint.getX() - position.getX()); + int dify = (int) (targetPoint.getY() - position.getY()); + int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); + + if (rotation > newRot && distance > 10) + { + rotation -= 0.15; + } + else if (rotation < newRot && distance > 10) + { + rotation += 0.15; + } + + Point2D oldPosition = position; + + // face direction + float directionX = (float) Math.cos(rotation); + float directionY = (float) Math.sin(rotation); + + if (distance > 10) + { + position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); + } + + boolean possible = true; + for (DrawObject object : objects) + { + if (object instanceof Entrance || object instanceof Waypoint) + { + continue; + } + + if (hasCollisionDO(object)) + { + possible = false; + } + } + if (possible == false) + { + position = oldPosition; + rotation += 0.2; + } + if (checkIfOnWaypoint(panel)) + { + HashMap options = new HashMap(); + for (Waypoint w : panel.getWaypoints()) + { + options.put(w.getSelf(), w.getOptions()); + } + + for (Map.Entry e : options.entrySet()) + { + for (int i : e.getValue()) + { + if (finalTarget != target) + { + if (finalTarget == i && e.getKey() == target) + { + target = finalTarget; + break; + } + else if (finalTarget == i) + { + target = e.getKey(); + break; + } + } + } + } + } + + } + + public boolean checkIfOnWaypoint(Panel panel) + { + if (panel.getWaypoint(target).contains(position)) + { + return true; + } + return false; } public void moveToTarget(DrawObject target, ArrayList objects, ArrayList visitors, ArrayList paths) @@ -100,7 +200,7 @@ public class Visitor break; } Shape containsShape = p.containsPointShape(position); - if(containsShape != null) + if (containsShape != null) { tar = new Point2D.Double(containsShape.getBounds().getCenterX(), containsShape.getBounds().getCenterY()); } @@ -137,14 +237,15 @@ public class Visitor boolean possible = true; for (DrawObject object : objects) { - if (hitTest(object)) + if (hasCollisionDO(object)) { possible = false; } } for (Visitor object : visitors) { - if (hitTestVisitor(object) && object != this) + + if (hasCollision(object) && object != this) { possible = false; } @@ -208,27 +309,23 @@ public class Visitor } } lastShape = values.get(lastdistance); - + Point2D.Double target2 = new Point2D.Double(lastShape.getBounds().getCenterX(), lastShape.getBounds().getCenterY()); - + double newRot = Math.atan2(target2.getY() - position.getY(), target2.getX() - position.getX()); int difx = (int) (target2.getX() - position.getX()); int dify = (int) (target2.getY() - position.getY()); int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); - System.out.println(rotation); - System.out.println(newRot); - System.out.println("--------------"); -// if (rotation > newRot && distance > 10) -// { -// rotation -= 0.15; -// } -// else if (rotation < newRot && distance > 10) -// { -// rotation += 0.15; -// } - rotation = newRot; + if (rotation > newRot && distance > 10) + { + rotation -= 0.15; + } + else if (rotation < newRot && distance > 10) + { + rotation += 0.15; + } Point2D oldPosition = position; @@ -244,14 +341,14 @@ public class Visitor boolean possible = true; for (DrawObject object : objects) { - if (hitTest(object)) + if (hasCollisionDO(object)) { possible = false; } } for (Visitor object : visitors) { - if (hitTestVisitor(object) && object != this) + if (hasCollision(object) && object != this) { possible = false; } @@ -264,6 +361,7 @@ public class Visitor } } + @SuppressWarnings("static-access") public void fillActions() { int startTime = 540; @@ -272,65 +370,91 @@ public class Visitor while (startTime < stopTime) { int random = (int) Math.floor(Math.random() * 51); - if (random < 30) + if (random < 40) { Point2D position = null; DrawObject targetStage = null; + ArrayList posEvents = new ArrayList(); for (Event e : agenda.getEvents()) { - if (convertMinutesToHours(startTime) > e.getStart() && convertMinutesToHours(startTime) < e.getStop()) + if (startTime >= e.getStart() && startTime < e.getStop()) { - for (DrawObject d : objects) + posEvents.add(e); + } + } + + if (posEvents.size() != 0) + { + int r = (int) Math.floor(Math.random() * posEvents.size()); + Event evs = posEvents.get(r); + for (DrawObject d : objects) + { + if (d.getFileName().equals("stage")) { - if (d.getFileName().equals(e.getStage().getName())) + Stage s = (Stage) d; + if (s.getStage().getName().equals(evs.getStage().getName())) { - position = d.getPosition(); + position = s.getPosition(); targetStage = d; } } } } + int randomtime = (int) (40 + (Math.random() * (60 - 40))); if (position != null) { - actions.add(new Action(position, startTime, randomtime, targetStage)); + Waypoint w = getClosestWaypoint(position); + actions.add(new Action(position, startTime, randomtime, targetStage, w)); } startTime = startTime + randomtime; } - else if (random >= 30 && random < 35) + else if (random >= 40 && random < 45) { Point2D position = null; - DrawObject targetDraw = null; + DrawObject targetStage = null; + ArrayList foodPlaces = new ArrayList(); for (DrawObject d : objects) { - if (d.getFileName().equals("entrance")) + if (d.getFileName().equals("food")) { - position = d.getPosition(); + foodPlaces.add(d); } } - if (position != null) + + if (foodPlaces.size() != 0) { - actions.add(new Action(position, startTime, 35, targetDraw)); - startTime = startTime + 35; + int r = (int) Math.floor(Math.random() * foodPlaces.size()); + position = foodPlaces.get(r).getPosition(); + targetStage = foodPlaces.get(r); + Waypoint w = getClosestWaypoint(position); + actions.add(new Action(position, startTime, 35, targetStage, w)); + startTime = startTime + 20; } startTime = startTime + 35; } - else if (random > 35) + else if (random > 45) { Point2D position = null; - DrawObject targetDrawobj = null; + DrawObject targetStage = null; + ArrayList toilets = new ArrayList(); for (DrawObject d : objects) { if (d.getFileName().equals("wc")) { - position = d.getPosition(); + toilets.add(d); } } - if (position != null) + if (toilets.size() != 0) { - actions.add(new Action(position, startTime, 35, targetDrawobj)); + int r = (int) Math.floor(Math.random() * toilets.size()); + position = toilets.get(r).getPosition(); + targetStage = toilets.get(r); + Waypoint w = getClosestWaypoint(position); + actions.add(new Action(position, startTime, 35, targetStage, w)); + startTime = startTime + 20; } startTime = startTime + 35; @@ -338,35 +462,69 @@ public class Visitor } } - public int convertMinutesToHours(int startTime) + public Waypoint getClosestWaypoint(Point2D point) { - int time = 0; - int hours = startTime / 60; - int minutes = startTime % 60; - time = (hours * 100) + minutes; - return time; + Waypoint waypoint = null; + int distance = 10000; + for (Waypoint w : waypoints) + { + if (w.getPosition().distance(point) < distance) + { + waypoint = w; + distance = (int) w.getPosition().distance(point); + } + } + return waypoint; } - public int getEndX() + public boolean hasCollisionDO(DrawObject object) { Image image = Images.getImage(filename); - return (int) (position.getX() + image.getWidth(null)); + Image image2 = Images.getImage(object.getFileName()); + Rectangle recta = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null)); + Rectangle rectb = new Rectangle((int) object.getPosition().getX(), (int) object.getPosition().getY(), image2.getWidth(null), image2.getHeight(null)); + + Area a = new Area(recta); + Area b = new Area(rectb); + + AffineTransform transA = new AffineTransform(); + transA.rotate(rotation, position.getX(), position.getY()); + + AffineTransform transB = new AffineTransform(); + transB.rotate(Math.toRadians(object.getRotation()), object.getPosition().getX(), object.getPosition().getY()); + + Area aa = a.createTransformedArea(transA); + Area bb = b.createTransformedArea(transB); + + if (bb.intersects(aa.getBounds2D())) + { + return true; + } + return false; } - public int getEndY() + public boolean hasCollision(Visitor v) { Image image = Images.getImage(filename); - return (int) (position.getY() + image.getHeight(null)); - } + Rectangle a = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null)); + Rectangle b = new Rectangle((int) v.position.getX(), (int) v.position.getY(), image.getWidth(null), image.getHeight(null)); - public boolean hitTest(DrawObject to2) - { - return (getEndX() >= to2.getPosition().getX() && getEndY() >= to2.getPosition().getY() && to2.getEndX() >= position.getX() && to2.getEndY() >= position.getY()); + Area aa = new Area(a); + Area bb = new Area(b); - } + AffineTransform af = new AffineTransform(); + af.rotate(rotation, position.getX(), position.getY()); - public boolean hitTestVisitor(Visitor v) - { - return (getEndX() >= v.position.getX() && getEndY() >= v.position.getY() && v.getEndX() >= position.getX() && v.getEndY() >= position.getY()); + AffineTransform bf = new AffineTransform(); + bf.rotate(v.rotation, v.position.getX(), v.position.getY()); + + Area ra = aa.createTransformedArea(af); + Area rb = bb.createTransformedArea(bf); + + if (ra.intersects(rb.getBounds2D())) + { + return true; + } + return false; } } \ No newline at end of file diff --git a/Applicatie/WaypointPopup.java b/Applicatie/WaypointPopup.java index f5e88cf..05196aa 100644 --- a/Applicatie/WaypointPopup.java +++ b/Applicatie/WaypointPopup.java @@ -1,10 +1,13 @@ package Applicatie; import java.awt.BorderLayout; +import java.awt.Dimension; import java.awt.FlowLayout; -import java.awt.GridLayout; +import java.awt.Font; 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.JFrame; import javax.swing.JLabel; @@ -16,25 +19,82 @@ import Objects.DrawObject; public class WaypointPopup extends JFrame { private static final long serialVersionUID = 1; + private JLabel title; - public WaypointPopup(DrawObject w) + public WaypointPopup(DrawObject w, Panel panel) { - super("Artist editscreen!"); + super("Edit WayPoint"); Waypoint wp = (Waypoint) w; setDefaultCloseOperation(HIDE_ON_CLOSE); JPanel content = new JPanel(new BorderLayout()); - JPanel south = new JPanel(new FlowLayout()); - JPanel center = new JPanel(new GridLayout(5,2)); + JPanel north = new JPanel(); + if(wp.getSelf() == 0) + { + title = new JLabel("Edit WayPoint"); + } + else + { + title = new JLabel("Edit WayPoint " + wp.getSelf()); + } + title.setFont(new Font("Dialog", Font.BOLD, 24)); + north.add(title); + content.add(north, BorderLayout.NORTH); + JPanel center = new JPanel(new FlowLayout()); + JPanel row1 = new JPanel(); + row1.setLayout(new BoxLayout(row1, BoxLayout.Y_AXIS)); + JPanel row2 = new JPanel(); + row2.setLayout(new BoxLayout(row2, BoxLayout.Y_AXIS)); + JPanel south = new JPanel(); content.add(south, BorderLayout.SOUTH); content.add(center, BorderLayout.CENTER); + center.add(row1); + center.add(row2); + + JPanel empty = new JPanel(); + empty.add(Box.createRigidArea(new Dimension(0, 20))); + row2.add(empty); JPanel panel1 = new JPanel(); JLabel name = new JLabel("Waypoint"); + name.setFont(new Font("Dialog", Font.PLAIN, 20)); panel1.add(name); - center.add(panel1); + row1.add(panel1); - JTextField tf = new JTextField(5); - center.add(tf); + JTextField tf = new JTextField(wp.getSelf() + "", 10); + row2.add(tf); + + JPanel panel2 = new JPanel(); + JLabel options = new JLabel("Options"); + options.setFont(new Font("Dialog", Font.PLAIN, 20)); + panel2.add(options); + row1.add(panel2); + + JPanel empty2 = new JPanel(); + empty2.add(Box.createRigidArea(new Dimension(0, 5))); + row2.add(empty2); + + String optionss = ""; + if(wp.getOptions() != null) + { + if(wp.getOptions().length != 0) + { + int[] optionsa = wp.getOptions(); + optionss += optionsa[0]; + for(int i = 1; i < optionsa.length; i++) + { + optionss += "-" + optionsa[i]; + } + } + } + + JTextField tx = new JTextField("" + optionss, 8); + row2.add(tx); + + JPanel help = new JPanel(); + JLabel example = new JLabel("example: '1-2-3'"); + example.setFont(new Font("Dialog", Font.PLAIN, 12)); + help.add(example); + row2.add(help); JButton edit = new JButton("Done"); edit.addActionListener(new ActionListener() @@ -44,14 +104,34 @@ public class WaypointPopup extends JFrame { public void actionPerformed(ActionEvent e) { wp.setSelf(Integer.valueOf(tf.getText())); + panel.addWaypoint(wp); dispose(); + String options[] = tx.getText().split("-"); + int ioptions[] = new int[options.length]; + for(int i = 0; i < options.length; i++) + { + ioptions[i] = Integer.valueOf(options[i]); + } + wp.setOptions(ioptions); + } }); south.add(edit); + JButton cancel = new JButton("Cancel"); + cancel.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + dispose(); + } + }); + south.add(cancel); + setContentPane(content); setVisible(true); - setSize(500,320); + setSize(300,250); } } diff --git a/Listeners/Mouse.java b/Listeners/Mouse.java index f77a8f6..75d8b1c 100644 --- a/Listeners/Mouse.java +++ b/Listeners/Mouse.java @@ -10,6 +10,8 @@ import java.awt.image.BufferedImage; import javax.swing.SwingUtilities; import Applicatie.Panel; +import Applicatie.PathPopup; + import Applicatie.Waypoint; import Applicatie.WaypointPopup; import Objects.DrawObject; @@ -45,14 +47,17 @@ public class Mouse extends MouseAdapter if (e.getX() >= panel.getScrollfactor() && e.getX() < last + image.getWidth() + panel.getScrollfactor()) { DrawObject tempDrawObj = panel.createNewDrawObject(i); - tempDrawObj.setPosition(clickPoint); - if (!panel.getObjects().isEmpty()) - panel.clearObjectSelection(); - panel.setDragObject(tempDrawObj); - panel.getDragObject().setSelected(true); - panel.getPP().setSelected(tempDrawObj); - panel.setSelectedObject(tempDrawObj); - selectedObject = tempDrawObj; + if (tempDrawObj != null) + { + tempDrawObj.setPosition(clickPoint); + if (!panel.getObjects().isEmpty()) + panel.clearObjectSelection(); + panel.setDragObject(tempDrawObj); + panel.getDragObject().setSelected(true); + panel.getPP().setSelected(tempDrawObj); + panel.setSelectedObject(tempDrawObj); + selectedObject = tempDrawObj; + } break; } i++; @@ -71,8 +76,10 @@ public class Mouse extends MouseAdapter { if (SwingUtilities.isRightMouseButton(e)) { - if(o instanceof Waypoint){ - new WaypointPopup(o); + if (o instanceof Waypoint) + { + new WaypointPopup(o, panel); + } } if (o == selectedObject) @@ -118,7 +125,19 @@ public class Mouse extends MouseAdapter } } - panel.checkPath(clickPoint); + Path clickedPath = panel.getClickedPath(clickPoint); + if (clickedPath != null) + { + if (SwingUtilities.isRightMouseButton(e)) + { + new PathPopup(clickedPath, panel); + } + } + else + { + panel.checkPath(clickPoint); + } + } if (panel.getDragObject() == null && selectedObject != null) { @@ -130,15 +149,19 @@ public class Mouse extends MouseAdapter } else { // Making path. + panel.getCurrentPath().addPoint(new Point2D.Double(clickPoint.getX(), clickPoint.getY())); + } panel.repaint(); } public void mouseReleased(MouseEvent e) { - if(panel.getDragObject() != null) { - if(panel.getDragObject().getRectangleColor() != Color.RED) { + if (panel.getDragObject() != null) + { + if (panel.getDragObject().getRectangleColor() != Color.RED) + { panel.getDragObject().setPosition(panel.getDragObject().getPosition(), true); panel.getPP().update(); panel.setDragObject(null); diff --git a/Objects/DrawObject.java b/Objects/DrawObject.java index 6580c79..1b7faf6 100644 --- a/Objects/DrawObject.java +++ b/Objects/DrawObject.java @@ -256,6 +256,7 @@ public abstract class DrawObject implements Serializable setPosition(position); } + public double getRotation() { return rotation; diff --git a/Objects/Path.java b/Objects/Path.java index 15b3de0..010303b 100644 --- a/Objects/Path.java +++ b/Objects/Path.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import javax.imageio.ImageIO; +import Applicatie.Panel; import Applicatie.Waypoint; /** @@ -95,7 +96,7 @@ public class Path } return null; } - + /** * Check if one of the lines contains the given point. * @@ -114,12 +115,13 @@ public class Path } return false; } - + + public boolean intersectsRect(Rectangle2D rect) { - for(Shape line : getPath()) + for (Shape line : getPath()) { - if(line.intersects(rect)) + if (line.intersects(rect)) { return true; } @@ -144,13 +146,23 @@ public class Path lines.add(stroke.createStrokedShape(line)); } return lines; + } - - public void addWaypoint(Waypoint w) + + public void addWaypoint(int i, Panel panel) { - waypoints.add(w); + for (Waypoint w : panel.getWaypoints()) + { + if (w.getSelf() == i) + { + waypoints.add(w); + return; + } + } + } + /** * Add a point to the path. * diff --git a/Objects/Stage.java b/Objects/Stage.java index c006d71..7252c15 100644 --- a/Objects/Stage.java +++ b/Objects/Stage.java @@ -2,11 +2,16 @@ package Objects; import java.awt.geom.Point2D; +import Agenda.AgendaStage; + public class Stage extends DrawObject { - public Stage(Point2D position) + AgendaStage stage; + + public Stage(Point2D position, AgendaStage st) { super("stage", position); + stage = st; } @Override @@ -15,4 +20,14 @@ public class Stage extends DrawObject return "Stage"; } + public AgendaStage getStage() + { + return stage; + } + + public void setStage(AgendaStage stage) + { + this.stage = stage; + } + } From 457da54a5cd50d8d54169a2d4d84cb09e103002b Mon Sep 17 00:00:00 2001 From: Kenneth van Ewijk Date: Wed, 8 Apr 2015 21:01:13 +0200 Subject: [PATCH 5/5] Fixed agenda module sync --- Agenda/MenuBar.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Agenda/MenuBar.java b/Agenda/MenuBar.java index ebd8825..45d5dbe 100644 --- a/Agenda/MenuBar.java +++ b/Agenda/MenuBar.java @@ -64,6 +64,7 @@ public class MenuBar extends JMenuBar { open.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Applicatie.SaveLoad.load(w.getPanel()); + w.setAgenda(w.getPanel().getAgenda()); Window.updatePanel(); } });