20 Commits
Author SHA1 Message Date
guusvdongen 911714f9b5 Update Visitor.java 2015-04-08 21:15:45 +02:00
unknown 254167ba15 print out line op 2015-04-08 17:40:22 +02:00
unknown b8a7d9c02d change 2015-04-08 17:24:29 +02:00
unknown 69c05da3fd laatste versie 2015-04-08 15:56:46 +02:00
unknown c2cb07cf3e ok 2015-04-08 13:11:16 +02:00
unknown 90ca17e28a ok 2015-04-08 12:13:39 +02:00
unknown c29ccec789 ok 2015-04-07 14:58:47 +02:00
unknown 0535d98427 ok 2015-04-07 14:29:24 +02:00
unknown a2110d3e58 ok 2015-04-07 12:36:14 +02:00
unknown d8efbc8616 laatste update 2015-03-26 12:05:33 +01:00
unknown b9d42cd4eb new 2015-03-24 13:47:45 +01:00
unknown ca90d98d9a fix 2015-03-17 12:58:20 +01:00
unknown a3479fc37a fix 2015-03-17 12:35:57 +01:00
unknown 2f53d1353f added stuff 2015-03-17 12:23:43 +01:00
guusvdongen 87bf6d9295 festivaldemo methodes
Tekenobject & podium moeten Serializable worden.
In tekenobject moet de image variablen een String filepath worden.
Dan kun je moet je voor elke methode in tekenobject waar je die image voor nodig had (Image image = new ImageIcon(filepath).getImage();) doen. Dit komt, omdat een image niet serializable is :(
2015-03-12 18:18:03 +01:00
guusvdongen a89feaaaab Delete selection.png 2015-03-12 18:14:00 +01:00
guusvdongen df02d793eb Delete grass.jpg 2015-03-12 18:13:42 +01:00
guusvdongen a00ccbe085 Delete commons-lang3-3.3.2.jar 2015-03-12 18:13:27 +01:00
guusvdongen 835d126d80 Delete README.md 2015-03-12 18:13:22 +01:00
guusvdongen dd7893375e Agenda load/save fix 2015-03-12 18:12:25 +01:00
25 changed files with 209 additions and 718 deletions
+2 -2
View File
@@ -55,11 +55,11 @@ public class Event implements Serializable {
} }
public int getStart(){ public int getStart(){
return (startHour * 60) + startMinute; return (startHour * 100) + startMinute;
} }
public int getStop(){ public int getStop(){
return (stopHour * 60) + stopMinute; return (stopHour * 100) + stopMinute;
} }
public int getStopHour(){ public int getStopHour(){
-41
View File
@@ -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;
}
}
+2 -1
View File
@@ -46,8 +46,9 @@ public class Action
{ {
return duration; return duration;
} }
public Waypoint getWaypoint(){ public Waypoint getWaypoint(){
return waypoint; return waypoint;
} }
} }
-100
View File
@@ -1,100 +0,0 @@
package Applicatie;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class AddPeoplePanel extends JFrame {
public AddPeoplePanel(Panel topPanel) {
super("Adding people");
setDefaultCloseOperation(HIDE_ON_CLOSE);
setResizable(false);
JPanel mainPanel = new JPanel(new BorderLayout());
JLabel label;
JButton button;
//Top:
JPanel panel = new JPanel();
label = new JLabel("Enter the amount of people you want to add: ");
panel.add(label);
mainPanel.add(panel,BorderLayout.NORTH);
//Center:
panel = new JPanel();
JTextField amountOfPeopleField = new JTextField("0");
amountOfPeopleField.setPreferredSize(new Dimension(100,20));
amountOfPeopleField.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
try {
amountOfPeopleField.setBackground(Color.WHITE);
int amountOfPeople = Integer.parseInt(amountOfPeopleField.getText());
amountOfPeopleField.setText(amountOfPeople + "");
}
catch(NumberFormatException nf) {
amountOfPeopleField.setBackground(Color.RED);
}
}
@Override
public void keyPressed(KeyEvent e) {
}
});
label = new JLabel("people ");
panel.add(amountOfPeopleField);
panel.add(label);
mainPanel.add(panel,BorderLayout.CENTER);
//Bottom:
panel = new JPanel();
button = new JButton("Cancel");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AddPeoplePanel.this.dispose();
}
});
panel.add(button);
button = new JButton("Apply");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(amountOfPeopleField.getBackground() != Color.RED) {
topPanel.addVisitors(Integer.parseInt(amountOfPeopleField.getText()));
AddPeoplePanel.this.dispose();
}
else
JOptionPane.showMessageDialog(topPanel, "Only numbers are accepted");
}
});
panel.add(button);
mainPanel.add(panel,BorderLayout.SOUTH);
add(mainPanel);
//Finishing off
pack();
setSize(290,150);
setLocationRelativeTo(null);
setVisible(true);
}
}
+3 -7
View File
@@ -19,16 +19,13 @@ public class ControlPanel extends JPanel
private static final long serialVersionUID = 6805244250902524351L; private static final long serialVersionUID = 6805244250902524351L;
private Panel p; private Panel p;
private int people;
JLabel timeLabel; JLabel timeLabel;
JLabel peopleLabel;
public ControlPanel() public ControlPanel()
{ {
super(); super();
BoxLayout box = new BoxLayout(this, BoxLayout.X_AXIS); BoxLayout box = new BoxLayout(this, BoxLayout.X_AXIS);
setLayout(box); setLayout(box);
people = 0;
setPreferredSize(new Dimension(0,50)); setPreferredSize(new Dimension(0,50));
setBorder(BorderFactory.createLineBorder(new Color(180, 180, 180))); setBorder(BorderFactory.createLineBorder(new Color(180, 180, 180)));
@@ -108,7 +105,7 @@ public class ControlPanel extends JPanel
peoplePanel.setMaximumSize(new Dimension(285,50)); peoplePanel.setMaximumSize(new Dimension(285,50));
add(peoplePanel); add(peoplePanel);
{ {
peopleLabel = new JLabel(people + " People"); JLabel peopleLabel = new JLabel("0/0 People");
peopleLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20)); peopleLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20));
peoplePanel.add(peopleLabel); peoplePanel.add(peopleLabel);
@@ -118,7 +115,7 @@ public class ControlPanel extends JPanel
peopleButton.addActionListener(new ActionListener(){ peopleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) public void actionPerformed(ActionEvent e)
{ {
new AddPeoplePanel(p); p.addVisitors();
} }
}); });
peoplePanel.add(peopleButton); peoplePanel.add(peopleButton);
@@ -150,7 +147,6 @@ public class ControlPanel extends JPanel
public void setPeople(int people) public void setPeople(int people)
{ {
this.people = people;
peopleLabel.setText(people + " People");
} }
} }
-268
View File
@@ -1,268 +0,0 @@
package Applicatie;
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;
private Image image;
protected boolean selected;
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();
scale = 1;
rotation = 0;
this.position = position;
rectangleColor = Color.BLACK;
}
public abstract String getName();
public void draw(Graphics2D g)
{
AffineTransform tx = getTransform();
g.drawImage(image, tx, null);
if (selected)
{
// g.rotate(Math.toRadians(rotation), image.getWidth(null)/2,
// image.getHeight(null)/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(), (int) position.getY(), image.getWidth(null), image.getHeight(null));
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), image.getWidth(null) / 2, image.getHeight(null) / 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, 0, image.getWidth(null), image.getHeight(null));
return getTransform().createTransformedShape(shape).contains(clickPoint);
}
else
{
shape = new Rectangle2D.Double(-9, -9, image.getWidth(null) + 13, image.getHeight(null) + 13);
return getTransformSelection().createTransformedShape(shape).contains(clickPoint);
}
}
public Point2D getObjectPoint(Point2D point)
{
try
{
return getTransform().inverseTransform(point, null);
}
catch (NoninvertibleTransformException e)
{
e.printStackTrace();
}
return null;
}
/**
* 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.intersects(otherRectangle))
return true;
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));
}
}
+1
View File
@@ -2,6 +2,7 @@ package Applicatie;
public class Main public class Main
{ {
public static void main(String[] args) public static void main(String[] args)
{ {
new Window(); new Window();
+14 -17
View File
@@ -229,16 +229,7 @@ public class Panel extends JPanel implements ActionListener
return waypoints; return waypoints;
} }
public void addVisitors(ArrayList<DrawObject> entrances) public void addVisitors()
{
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));
}
public void addVisitors(int count)
{ {
ArrayList<DrawObject> entrances = new ArrayList<>(); ArrayList<DrawObject> entrances = new ArrayList<>();
for(DrawObject object : objects) { for(DrawObject object : objects) {
@@ -247,14 +238,21 @@ public class Panel extends JPanel implements ActionListener
} }
} }
if(!entrances.isEmpty()) { if(!entrances.isEmpty()) {
for (int i = 0; i < count; i++) DrawObject entrance = entrances.get((int) Math.floor(Math.random()*entrances.size()));
{ Point point = new Point((int)entrance.getPosition().getX(),(int)entrance.getPosition().getY());
addVisitors(entrances); visitors.add(new Visitor("visitor",point, agenda, objects, waypoints, date));
}
} }
else else {
JOptionPane.showMessageDialog(this, "You don't have an entrance"); JOptionPane.showMessageDialog(this, "You don't have an entrance");
cp.setPeople(visitors.size()); }
}
public void addVisitors(int count)
{
for (int i = 0; i < count; i++)
{
addVisitors();
}
} }
public void paintComponent(Graphics g) public void paintComponent(Graphics g)
@@ -671,7 +669,6 @@ public class Panel extends JPanel implements ActionListener
this.height = height; this.height = height;
paths.clear(); paths.clear();
objects.clear(); objects.clear();
visitors.clear();
cameraScale = 1; cameraScale = 1;
switch (terrainIndex) switch (terrainIndex)
{ {
+15 -27
View File
@@ -1,11 +1,11 @@
package Applicatie; package Applicatie;
import java.awt.BorderLayout;
import java.awt.FlowLayout; import java.awt.FlowLayout;
import java.awt.Font; import java.awt.GridLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
@@ -21,21 +21,20 @@ public class PathPopup extends JFrame
public PathPopup(Path p, Panel panel) public PathPopup(Path p, Panel panel)
{ {
super(""); super("Artist editscreen!");
setDefaultCloseOperation(HIDE_ON_CLOSE); setDefaultCloseOperation(HIDE_ON_CLOSE);
JPanel content = new JPanel(); JPanel content = new JPanel(new BorderLayout());
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
JPanel south = new JPanel(new FlowLayout()); JPanel south = new JPanel(new FlowLayout());
JPanel center = new JPanel(); JPanel center = new JPanel(new GridLayout(5, 2));
JPanel panel1 = new JPanel(); content.add(south, BorderLayout.SOUTH);
JLabel name = new JLabel("Add WayPoint"); content.add(center, BorderLayout.CENTER);
name.setFont(new Font("Dialog", Font.BOLD, 20));
panel1.add(name);
content.add(panel1);
content.add(center);
content.add(south);
JTextField tf = new JTextField(10); JPanel panel1 = new JPanel();
JLabel name = new JLabel("Path");
panel1.add(name);
center.add(panel1);
JTextField tf = new JTextField(5);
center.add(tf); center.add(tf);
JButton edit = new JButton("Done"); JButton edit = new JButton("Done");
@@ -48,22 +47,11 @@ public class PathPopup extends JFrame
dispose(); dispose();
} }
}); });
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
south.add(edit); south.add(edit);
south.add(cancel);
setContentPane(content); setContentPane(content);
setVisible(true); setVisible(true);
setSize(200, 150); setSize(500, 320);
} }
} }
+165 -212
View File
@@ -19,8 +19,7 @@ import Objects.Entrance;
import Objects.Path; import Objects.Path;
import Objects.Stage; import Objects.Stage;
public class Visitor public class Visitor {
{
Point2D position; Point2D position;
double rotation; double rotation;
@@ -30,15 +29,14 @@ public class Visitor
ArrayList<Action> actions; ArrayList<Action> actions;
Agenda agenda; Agenda agenda;
ArrayList<DrawObject> objects; ArrayList<DrawObject> objects;
ArrayList<Waypoint> waypoints; ArrayList<Waypoint> waypoints;
GregorianCalendar date; GregorianCalendar date;
int target; int target;
int finalTarget; int finalTarget;
public Visitor(String filename, Point2D position, Agenda agenda, ArrayList<DrawObject> objects, ArrayList<Waypoint> waypoints, GregorianCalendar date) public Visitor(String filename, Point2D position, Agenda agenda,
ArrayList<DrawObject> objects, ArrayList<Waypoint> waypoints,
{ GregorianCalendar date) {
this.position = position; this.position = position;
this.filename = filename; this.filename = filename;
this.rotation = 0; this.rotation = 0;
@@ -50,19 +48,21 @@ public class Visitor
this.agenda = agenda; this.agenda = agenda;
this.objects = objects; this.objects = objects;
fillActions(); fillActions();
System.out.println(actions.size());
for (Action a : actions){
System.out.println("" + a.getStartTime());
}
target = 1; target = 1;
finalTarget = 0; finalTarget = 4;
} }
public void draw(Graphics2D g2) public void draw(Graphics2D g2) {
{
AffineTransform tx = getTransform(); AffineTransform tx = getTransform();
Image image = Images.getImage(filename); Image image = Images.getImage(filename);
g2.drawImage(image, tx, null); g2.drawImage(image, tx, null);
} }
private AffineTransform getTransform() private AffineTransform getTransform() {
{
Image image = Images.getImage(filename); Image image = Images.getImage(filename);
AffineTransform tx = new AffineTransform(); AffineTransform tx = new AffineTransform();
tx.scale(scale, scale); tx.scale(scale, scale);
@@ -71,51 +71,43 @@ public class Visitor
return tx; return tx;
} }
public DrawObject getEntrance() public DrawObject getEntrance() {
{ for (DrawObject o : objects) {
for (DrawObject o : objects) if (o instanceof Entrance) {
{
if (o instanceof Entrance)
{
return o; return o;
} }
} }
return null; return null;
} }
public void update(ArrayList<DrawObject> objects, int currentTime, ArrayList<Visitor> visitors, ArrayList<Path> paths, Panel panel) public void update(ArrayList<DrawObject> objects, int currentTime,
{ ArrayList<Visitor> visitors, ArrayList<Path> paths, Panel panel) {
DrawObject target = getEntrance(); DrawObject target = getEntrance();
for (Action a : actions) for (Action a : actions) {
{ if (currentTime >= a.getStartTime()
if (currentTime >= a.getStartTime() && currentTime < a.getStoptime()) && currentTime < a.getStoptime()) {
{ finalTarget = a.getWaypoint().getSelf();
this.finalTarget = a.getWaypoint().getSelf();
} }
} }
System.out.println(actions.size());
// moveToTarget(target, objects, visitors, paths); // moveToTarget(target, objects, visitors, paths);
move(target, panel); move(target, panel);
} }
public void move(DrawObject tar, Panel panel) public void move(DrawObject tar, Panel panel) {
{
Point2D targetPoint = panel.getWaypoint(target).getPosition(); Point2D targetPoint = panel.getWaypoint(target).getPosition();
double newRot = Math.atan2(targetPoint.getY() - position.getY(), targetPoint.getX() - position.getX()); double newRot = Math.atan2(targetPoint.getY() - position.getY(),
targetPoint.getX() - position.getX());
int difx = (int) (targetPoint.getX() - position.getX()); int difx = (int) (targetPoint.getX() - position.getX());
int dify = (int) (targetPoint.getY() - position.getY()); int dify = (int) (targetPoint.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10) if (rotation > newRot && distance > 10) {
{
rotation -= 0.15; rotation -= 0.15;
} } else if (rotation < newRot && distance > 10) {
else if (rotation < newRot && distance > 10)
{
rotation += 0.15; rotation += 0.15;
} }
@@ -125,101 +117,85 @@ public class Visitor
float directionX = (float) Math.cos(rotation); float directionX = (float) Math.cos(rotation);
float directionY = (float) Math.sin(rotation); float directionY = (float) Math.sin(rotation);
if (distance > 10) if (distance > 10) {
{ position = new Point2D.Double(
position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); (position.getX() + directionX * speed),
(position.getY() + directionY * speed));
} }
boolean possible = true; boolean possible = true;
for (DrawObject object : objects) for (DrawObject object : objects) {
{ if (object instanceof Entrance || object instanceof Waypoint) {
if (object instanceof Entrance || object instanceof Waypoint)
{
continue; continue;
} }
if (hasCollisionDO(object)) {
if (hasCollisionDO(object))
{
possible = false; possible = false;
} }
} }
if (possible == false) if (possible == false) {
{
position = oldPosition; position = oldPosition;
rotation += 0.2; rotation += 0.2;
} }
if (checkIfOnWaypoint(panel)) if (checkIfOnWaypoint(panel)) {
{ // for(int i : panel.getWaypoint(target).getOptions())
// {
// if(i == finalTarget)
// {
// target = finalTarget;
// }
// }
// ArrayList<int[]> options = new ArrayList<int[]>();
HashMap<Integer, int[]> options = new HashMap<Integer, int[]>(); HashMap<Integer, int[]> options = new HashMap<Integer, int[]>();
for (Waypoint w : panel.getWaypoints()) for (Waypoint w : panel.getWaypoints()) {
{
options.put(w.getSelf(), w.getOptions()); options.put(w.getSelf(), w.getOptions());
} }
for (Map.Entry<Integer, int[]> e : options.entrySet()) {
for (Map.Entry<Integer, int[]> e : options.entrySet()) System.out.println(e.getKey());
{ System.out.println("=====================");
for (int i : e.getValue()) for (int i : e.getValue()) {
{ System.out.println(i);
if (finalTarget != target)
{
if (finalTarget == i && e.getKey() == target)
{
target = finalTarget;
break;
}
else if (finalTarget == i)
{
target = e.getKey();
break;
}
}
} }
System.out.println("----------");
} }
} }
} }
public boolean checkIfOnWaypoint(Panel panel) public boolean checkIfOnWaypoint(Panel panel) {
{ if (panel.getWaypoint(target).contains(position)) {
if (panel.getWaypoint(target).contains(position))
{
return true; return true;
} }
return false; return false;
} }
public void moveToTarget(DrawObject target, ArrayList<DrawObject> objects, ArrayList<Visitor> visitors, ArrayList<Path> paths) public void moveToTarget(DrawObject target, ArrayList<DrawObject> objects,
{ ArrayList<Visitor> visitors, ArrayList<Path> paths) {
Point2D tar = target.getPosition(); Point2D tar = target.getPosition();
boolean hasPathBelow = false; boolean hasPathBelow = false;
for (Path p : paths) for (Path p : paths) {
{ if (p.containsPoint(position)) {
if (p.containsPoint(position))
{
hasPathBelow = true; hasPathBelow = true;
break; break;
} }
Shape containsShape = p.containsPointShape(position); Shape containsShape = p.containsPointShape(position);
if (containsShape != null) if (containsShape != null) {
{ tar = new Point2D.Double(
tar = new Point2D.Double(containsShape.getBounds().getCenterX(), containsShape.getBounds().getCenterY()); containsShape.getBounds().getCenterX(), containsShape
.getBounds().getCenterY());
} }
} }
if (hasPathBelow) if (hasPathBelow) {
{ double newRot = Math.atan2(tar.getY() - position.getY(), tar.getX()
double newRot = Math.atan2(tar.getY() - position.getY(), tar.getX() - position.getX()); - position.getX());
int difx = (int) (tar.getX() - position.getX()); int difx = (int) (tar.getX() - position.getX());
int dify = (int) (tar.getY() - position.getY()); int dify = (int) (tar.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10) if (rotation > newRot && distance > 10) {
{
rotation -= 0.15; rotation -= 0.15;
} } else if (rotation < newRot && distance > 10) {
else if (rotation < newRot && distance > 10)
{
rotation += 0.15; rotation += 0.15;
} }
@@ -229,40 +205,30 @@ public class Visitor
float directionX = (float) Math.cos(rotation); float directionX = (float) Math.cos(rotation);
float directionY = (float) Math.sin(rotation); float directionY = (float) Math.sin(rotation);
if (distance > 10) if (distance > 10) {
{ position = new Point2D.Double((position.getX() + directionX
position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); * speed), (position.getY() + directionY * speed));
} }
boolean possible = true; boolean possible = true;
for (DrawObject object : objects) for (DrawObject object : objects) {
{ if (hasCollisionDO(object)) {
if (hasCollisionDO(object))
{
possible = false; possible = false;
} }
} }
for (Visitor object : visitors) for (Visitor object : visitors) {
{ if (hasCollision(object) && object != this) {
if (hasCollision(object) && object != this)
{
possible = false; possible = false;
} }
} }
if (possible == false) if (possible == false) {
{
position = oldPosition; position = oldPosition;
rotation += 0.2; rotation += 0.2;
} }
} } else {
else
{
HashMap<Double, Shape> values = new HashMap<Double, Shape>(); HashMap<Double, Shape> values = new HashMap<Double, Shape>();
for (Path p : paths) for (Path p : paths) {
{ for (Shape s : p.getPath()) {
for (Shape s : p.getPath())
{
Rectangle b = s.getBounds(); Rectangle b = s.getBounds();
double maxx = b.getMaxX(); double maxx = b.getMaxX();
double minx = b.getMinX(); double minx = b.getMinX();
@@ -276,16 +242,14 @@ public class Visitor
points[3] = new Point2D.Double(maxx, maxy); points[3] = new Point2D.Double(maxx, maxy);
Double lastdistance = null; Double lastdistance = null;
for (Point2D.Double point : points) for (Point2D.Double point : points) {
{ double distance = Point2D.distance(point.getX(),
double distance = Point2D.distance(point.getX(), point.getY(), position.getX(), position.getY()); point.getY(), position.getX(), position.getY());
if (lastdistance == null) if (lastdistance == null) {
{
lastdistance = distance; lastdistance = distance;
continue; continue;
} }
if (distance < lastdistance) if (distance < lastdistance) {
{
lastdistance = distance; lastdistance = distance;
} }
} }
@@ -295,35 +259,31 @@ public class Visitor
} }
Double lastdistance = null; Double lastdistance = null;
Shape lastShape = null; Shape lastShape = null;
for (Map.Entry<Double, Shape> e : values.entrySet()) for (Map.Entry<Double, Shape> e : values.entrySet()) {
{
double distance = e.getKey(); double distance = e.getKey();
if (lastdistance == null) if (lastdistance == null) {
{
lastdistance = distance; lastdistance = distance;
continue; continue;
} }
if (distance < lastdistance) if (distance < lastdistance) {
{
lastdistance = distance; lastdistance = distance;
} }
} }
lastShape = values.get(lastdistance); lastShape = values.get(lastdistance);
Point2D.Double target2 = new Point2D.Double(lastShape.getBounds().getCenterX(), lastShape.getBounds().getCenterY()); Point2D.Double target2 = new Point2D.Double(lastShape.getBounds()
.getCenterX(), lastShape.getBounds().getCenterY());
double newRot = Math.atan2(target2.getY() - position.getY(), target2.getX() - position.getX()); double newRot = Math.atan2(target2.getY() - position.getY(),
target2.getX() - position.getX());
int difx = (int) (target2.getX() - position.getX()); int difx = (int) (target2.getX() - position.getX());
int dify = (int) (target2.getY() - position.getY()); int dify = (int) (target2.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify)); int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10) if (rotation > newRot && distance > 10) {
{
rotation -= 0.15; rotation -= 0.15;
} } else if (rotation < newRot && distance > 10) {
else if (rotation < newRot && distance > 10)
{
rotation += 0.15; rotation += 0.15;
} }
@@ -333,127 +293,118 @@ public class Visitor
float directionX = (float) Math.cos(rotation); float directionX = (float) Math.cos(rotation);
float directionY = (float) Math.sin(rotation); float directionY = (float) Math.sin(rotation);
if (distance > 10) if (distance > 10) {
{ position = new Point2D.Double((position.getX() + directionX
position = new Point2D.Double((position.getX() + directionX * speed), (position.getY() + directionY * speed)); * speed), (position.getY() + directionY * speed));
} }
boolean possible = true; boolean possible = true;
for (DrawObject object : objects) for (DrawObject object : objects) {
{ if (hasCollisionDO(object)) {
if (hasCollisionDO(object))
{
possible = false; possible = false;
} }
} }
for (Visitor object : visitors) for (Visitor object : visitors) {
{ if (hasCollision(object) && object != this) {
if (hasCollision(object) && object != this)
{
possible = false; possible = false;
} }
} }
if (possible == false) if (possible == false) {
{
position = oldPosition; position = oldPosition;
rotation += 0.2; rotation += 0.2;
} }
} }
} }
@SuppressWarnings("static-access")
public void fillActions() public void fillActions() {
{
int startTime = 540; int startTime = 540;
int stopTime = 1260; int stopTime = 1260;
while (startTime < stopTime) while (startTime < stopTime) {
{
int random = (int) Math.floor(Math.random() * 51); int random = (int) Math.floor(Math.random() * 51);
if (random < 40) if (random < 30) {
{
Point2D position = null; Point2D position = null;
DrawObject targetStage = null; DrawObject targetStage = null;
ArrayList<Event> posEvents = new ArrayList<Event>(); ArrayList<Event> posEvents = new ArrayList<Event>();
for (Event e : agenda.getEvents()) for (Event e : agenda.getEvents()) {
{ if (startTime >= e.getStart() && startTime < e.getStop()) {
if (startTime >= e.getStart() && startTime < e.getStop())
{
posEvents.add(e); posEvents.add(e);
} }
} }
int totalPopularity = 0;
for (Event ev : posEvents){
totalPopularity += ev.getExpectedPopularity();
}
if (posEvents.size() != 0) Random rand = new Random();
{ int n = rand.nextInt(totalPopularity) + 1;
int r = (int) Math.floor(Math.random() * posEvents.size()); int currentPop = 0;
Event evs = posEvents.get(r); if (posEvents != null){
for (DrawObject d : objects) for (Event evs : posEvents){
{ int before = currentPop;
if (d.getFileName().equals("stage")) currentPop = currentPop + evs.getExpectedPopularity();
{ if (before < n && currentPop >= n){
Stage s = (Stage) d; for (DrawObject d : objects) {
if (s.getStage().getName().equals(evs.getStage().getName())) if (d.getFileName().equals("stage")) {
{ Stage s = (Stage) d;
position = s.getPosition(); if (s.getStage().getName()
targetStage = d; .equals(evs.getStage().getName())) {
position = s.getPosition();
targetStage = d;
}
}
} }
} }
} }
} }
int randomtime = (int) (40 + (Math.random() * (60 - 40))); int randomtime = (int) (40 + (Math.random() * (60 - 40)));
if (position != null) if (position != null) {
{ Waypoint w = getClosedWaypoint(position);
Waypoint w = getClosestWaypoint(position); actions.add(new Action(position, startTime, randomtime,
actions.add(new Action(position, startTime, randomtime, targetStage, w)); targetStage, w));
} }
startTime = startTime + randomtime; startTime = startTime + randomtime;
} } else if (random >= 30 && random < 40) {
else if (random >= 40 && random < 45)
{
Point2D position = null; Point2D position = null;
DrawObject targetStage = null; DrawObject targetStage = null;
ArrayList<DrawObject> foodPlaces = new ArrayList<DrawObject>(); ArrayList<DrawObject> foodPlaces = new ArrayList<DrawObject>();
for (DrawObject d : objects) for (DrawObject d : objects) {
{ if (d.getFileName().equals("food")) {
if (d.getFileName().equals("food"))
{
foodPlaces.add(d); foodPlaces.add(d);
} }
} }
if (foodPlaces.size() != 0) if (foodPlaces.size() != 0) {
{
int r = (int) Math.floor(Math.random() * foodPlaces.size()); int r = (int) Math.floor(Math.random() * foodPlaces.size());
position = foodPlaces.get(r).getPosition(); position = foodPlaces.get(r).getPosition();
targetStage = foodPlaces.get(r); targetStage = foodPlaces.get(r);
Waypoint w = getClosestWaypoint(position); Waypoint w = getClosedWaypoint(position);
actions.add(new Action(position, startTime, 35, targetStage, w)); actions.add(new Action(position, startTime, 35,
targetStage, w));
startTime = startTime + 20; startTime = startTime + 20;
} }
startTime = startTime + 35; startTime = startTime + 35;
} } else if (random >= 40) {
else if (random > 45)
{
Point2D position = null; Point2D position = null;
DrawObject targetStage = null; DrawObject targetStage = null;
ArrayList<DrawObject> toilets = new ArrayList<DrawObject>(); ArrayList<DrawObject> toilets = new ArrayList<DrawObject>();
for (DrawObject d : objects) for (DrawObject d : objects) {
{ if (d.getFileName().equals("wc")) {
if (d.getFileName().equals("wc"))
{
toilets.add(d); toilets.add(d);
} }
} }
if (toilets.size() != 0) if (toilets.size() != 0) {
{
int r = (int) Math.floor(Math.random() * toilets.size()); int r = (int) Math.floor(Math.random() * toilets.size());
position = toilets.get(r).getPosition(); position = toilets.get(r).getPosition();
targetStage = toilets.get(r); targetStage = toilets.get(r);
Waypoint w = getClosestWaypoint(position); Waypoint w = getClosedWaypoint(position);
actions.add(new Action(position, startTime, 35, targetStage, w)); actions.add(new Action(position, startTime, 35,
targetStage, w));
startTime = startTime + 20; startTime = startTime + 20;
} }
startTime = startTime + 35; startTime = startTime + 35;
@@ -462,14 +413,11 @@ public class Visitor
} }
} }
public Waypoint getClosestWaypoint(Point2D point) public Waypoint getClosedWaypoint(Point2D point) {
{
Waypoint waypoint = null; Waypoint waypoint = null;
int distance = 10000; int distance = 10000;
for (Waypoint w : waypoints) for (Waypoint w : waypoints) {
{ if (w.getPosition().distance(point) < distance) {
if (w.getPosition().distance(point) < distance)
{
waypoint = w; waypoint = w;
distance = (int) w.getPosition().distance(point); distance = (int) w.getPosition().distance(point);
} }
@@ -477,12 +425,15 @@ public class Visitor
return waypoint; return waypoint;
} }
public boolean hasCollisionDO(DrawObject object) public boolean hasCollisionDO(DrawObject object) {
{
Image image = Images.getImage(filename); Image image = Images.getImage(filename);
Image image2 = Images.getImage(object.getFileName()); Image image2 = Images.getImage(object.getFileName());
Rectangle recta = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null)); Rectangle recta = new Rectangle((int) position.getX(),
Rectangle rectb = new Rectangle((int) object.getPosition().getX(), (int) object.getPosition().getY(), image2.getWidth(null), image2.getHeight(null)); (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 a = new Area(recta);
Area b = new Area(rectb); Area b = new Area(rectb);
@@ -491,23 +442,26 @@ public class Visitor
transA.rotate(rotation, position.getX(), position.getY()); transA.rotate(rotation, position.getX(), position.getY());
AffineTransform transB = new AffineTransform(); AffineTransform transB = new AffineTransform();
transB.rotate(Math.toRadians(object.getRotation()), object.getPosition().getX(), object.getPosition().getY()); transB.rotate(Math.toRadians(object.getRotation()), object
.getPosition().getX(), object.getPosition().getY());
Area aa = a.createTransformedArea(transA); Area aa = a.createTransformedArea(transA);
Area bb = b.createTransformedArea(transB); Area bb = b.createTransformedArea(transB);
if (bb.intersects(aa.getBounds2D())) if (bb.intersects(aa.getBounds2D())) {
{
return true; return true;
} }
return false; return false;
} }
public boolean hasCollision(Visitor v) public boolean hasCollision(Visitor v) {
{
Image image = Images.getImage(filename); Image image = Images.getImage(filename);
Rectangle a = new Rectangle((int) position.getX(), (int) position.getY(), image.getWidth(null), image.getHeight(null)); Rectangle a = new Rectangle((int) position.getX(),
Rectangle b = new Rectangle((int) v.position.getX(), (int) v.position.getY(), image.getWidth(null), image.getHeight(null)); (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));
Area aa = new Area(a); Area aa = new Area(a);
Area bb = new Area(b); Area bb = new Area(b);
@@ -521,10 +475,9 @@ public class Visitor
Area ra = aa.createTransformedArea(af); Area ra = aa.createTransformedArea(af);
Area rb = bb.createTransformedArea(bf); Area rb = bb.createTransformedArea(bf);
if (ra.intersects(rb.getBounds2D())) if (ra.intersects(rb.getBounds2D())) {
{
return true; return true;
} }
return false; return false;
} }
} }
+2 -27
View File
@@ -60,7 +60,7 @@ public class WaypointPopup extends JFrame {
panel1.add(name); panel1.add(name);
row1.add(panel1); row1.add(panel1);
JTextField tf = new JTextField(wp.getSelf() + "", 10); JTextField tf = new JTextField(10);
row2.add(tf); row2.add(tf);
JPanel panel2 = new JPanel(); JPanel panel2 = new JPanel();
@@ -73,21 +73,7 @@ public class WaypointPopup extends JFrame {
empty2.add(Box.createRigidArea(new Dimension(0, 5))); empty2.add(Box.createRigidArea(new Dimension(0, 5)));
row2.add(empty2); row2.add(empty2);
String optionss = ""; JTextField tx = new JTextField(8);
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); row2.add(tx);
JPanel help = new JPanel(); JPanel help = new JPanel();
@@ -118,17 +104,6 @@ public class WaypointPopup extends JFrame {
}); });
south.add(edit); south.add(edit);
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
south.add(cancel);
setContentPane(content); setContentPane(content);
setVisible(true); setVisible(true);
setSize(300,250); setSize(300,250);
+5 -1
View File
@@ -4,15 +4,19 @@ import java.awt.Color;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import Applicatie.Panel; import Applicatie.Panel;
import Applicatie.PathPopup;
import Applicatie.Waypoint; import Applicatie.Waypoint;
import Applicatie.WaypointPopup; import Applicatie.WaypointPopup;
import Objects.DrawObject; import Objects.DrawObject;
import Objects.Path; import Objects.Path;
import Objects.Entrance;
public class Mouse extends MouseAdapter public class Mouse extends MouseAdapter
{ {
@@ -126,7 +130,7 @@ public class Mouse extends MouseAdapter
{ {
if (SwingUtilities.isRightMouseButton(e)) if (SwingUtilities.isRightMouseButton(e))
{ {
//new PathPopup(clickedPath, panel); new PathPopup(clickedPath, panel);
} }
} }
else else
-13
View File
@@ -1,13 +0,0 @@
package Objects;
import java.awt.geom.Point2D;
import Applicatie.DrawObject;
public class Podium extends DrawObject {
public Podium(Point2D position) {
super("images/stage3.png", position);
}
}
-2
View File
@@ -1,2 +0,0 @@
# FestivalPlanner
Festival Planner
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB