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(){
return (startHour * 60) + startMinute;
return (startHour * 100) + startMinute;
}
public int getStop(){
return (stopHour * 60) + stopMinute;
return (stopHour * 100) + stopMinute;
}
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;
}
public Waypoint getWaypoint(){
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 Panel p;
private int people;
JLabel timeLabel;
JLabel peopleLabel;
public ControlPanel()
{
super();
BoxLayout box = new BoxLayout(this, BoxLayout.X_AXIS);
setLayout(box);
people = 0;
setPreferredSize(new Dimension(0,50));
setBorder(BorderFactory.createLineBorder(new Color(180, 180, 180)));
@@ -108,7 +105,7 @@ public class ControlPanel extends JPanel
peoplePanel.setMaximumSize(new Dimension(285,50));
add(peoplePanel);
{
peopleLabel = new JLabel(people + " People");
JLabel peopleLabel = new JLabel("0/0 People");
peopleLabel.setFont(new Font("Segoe UI", Font.PLAIN, 20));
peoplePanel.add(peopleLabel);
@@ -118,7 +115,7 @@ public class ControlPanel extends JPanel
peopleButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
new AddPeoplePanel(p);
p.addVisitors();
}
});
peoplePanel.add(peopleButton);
@@ -150,7 +147,6 @@ public class ControlPanel extends JPanel
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 static void main(String[] args)
{
new Window();
+14 -17
View File
@@ -229,16 +229,7 @@ public class Panel extends JPanel implements ActionListener
return waypoints;
}
public void addVisitors(ArrayList<DrawObject> entrances)
{
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)
public void addVisitors()
{
ArrayList<DrawObject> entrances = new ArrayList<>();
for(DrawObject object : objects) {
@@ -247,14 +238,21 @@ public class Panel extends JPanel implements ActionListener
}
}
if(!entrances.isEmpty()) {
for (int i = 0; i < count; i++)
{
addVisitors(entrances);
}
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
else {
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)
@@ -671,7 +669,6 @@ public class Panel extends JPanel implements ActionListener
this.height = height;
paths.clear();
objects.clear();
visitors.clear();
cameraScale = 1;
switch (terrainIndex)
{
+15 -27
View File
@@ -1,11 +1,11 @@
package Applicatie;
import java.awt.BorderLayout;
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.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
@@ -21,21 +21,20 @@ public class PathPopup extends JFrame
public PathPopup(Path p, Panel panel)
{
super("");
super("Artist editscreen!");
setDefaultCloseOperation(HIDE_ON_CLOSE);
JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
JPanel content = new JPanel(new BorderLayout());
JPanel south = new JPanel(new FlowLayout());
JPanel center = new JPanel();
JPanel panel1 = new JPanel();
JLabel name = new JLabel("Add WayPoint");
name.setFont(new Font("Dialog", Font.BOLD, 20));
panel1.add(name);
content.add(panel1);
content.add(center);
content.add(south);
JPanel center = new JPanel(new GridLayout(5, 2));
content.add(south, BorderLayout.SOUTH);
content.add(center, BorderLayout.CENTER);
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);
JButton edit = new JButton("Done");
@@ -48,22 +47,11 @@ public class PathPopup extends JFrame
dispose();
}
});
JButton cancel = new JButton("Cancel");
cancel.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
dispose();
}
});
south.add(edit);
south.add(cancel);
setContentPane(content);
setVisible(true);
setSize(200, 150);
setSize(500, 320);
}
}
+165 -212
View File
@@ -19,8 +19,7 @@ import Objects.Entrance;
import Objects.Path;
import Objects.Stage;
public class Visitor
{
public class Visitor {
Point2D position;
double rotation;
@@ -30,15 +29,14 @@ public class Visitor
ArrayList<Action> actions;
Agenda agenda;
ArrayList<DrawObject> objects;
ArrayList<Waypoint> waypoints;
GregorianCalendar date;
int target;
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.filename = filename;
this.rotation = 0;
@@ -50,19 +48,21 @@ public class Visitor
this.agenda = agenda;
this.objects = objects;
fillActions();
System.out.println(actions.size());
for (Action a : actions){
System.out.println("" + a.getStartTime());
}
target = 1;
finalTarget = 0;
finalTarget = 4;
}
public void draw(Graphics2D g2)
{
public void draw(Graphics2D g2) {
AffineTransform tx = getTransform();
Image image = Images.getImage(filename);
g2.drawImage(image, tx, null);
}
private AffineTransform getTransform()
{
private AffineTransform getTransform() {
Image image = Images.getImage(filename);
AffineTransform tx = new AffineTransform();
tx.scale(scale, scale);
@@ -71,51 +71,43 @@ public class Visitor
return tx;
}
public DrawObject getEntrance()
{
for (DrawObject o : objects)
{
if (o instanceof Entrance)
{
public DrawObject getEntrance() {
for (DrawObject o : objects) {
if (o instanceof Entrance) {
return o;
}
}
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();
for (Action a : actions)
{
if (currentTime >= a.getStartTime() && currentTime < a.getStoptime())
{
this.finalTarget = a.getWaypoint().getSelf();
for (Action a : actions) {
if (currentTime >= a.getStartTime()
&& currentTime < a.getStoptime()) {
finalTarget = a.getWaypoint().getSelf();
}
}
System.out.println(actions.size());
// moveToTarget(target, objects, visitors, paths);
move(target, panel);
}
public void move(DrawObject tar, Panel 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());
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)
{
if (rotation > newRot && distance > 10) {
rotation -= 0.15;
}
else if (rotation < newRot && distance > 10)
{
} else if (rotation < newRot && distance > 10) {
rotation += 0.15;
}
@@ -125,101 +117,85 @@ public class Visitor
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));
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)
{
for (DrawObject object : objects) {
if (object instanceof Entrance || object instanceof Waypoint) {
continue;
}
if (hasCollisionDO(object))
{
if (hasCollisionDO(object)) {
possible = false;
}
}
if (possible == false)
{
if (possible == false) {
position = oldPosition;
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[]>();
for (Waypoint w : panel.getWaypoints())
{
for (Waypoint w : panel.getWaypoints()) {
options.put(w.getSelf(), w.getOptions());
}
for (Map.Entry<Integer, int[]> 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;
}
}
for (Map.Entry<Integer, int[]> e : options.entrySet()) {
System.out.println(e.getKey());
System.out.println("=====================");
for (int i : e.getValue()) {
System.out.println(i);
}
System.out.println("----------");
}
}
}
public boolean checkIfOnWaypoint(Panel panel)
{
if (panel.getWaypoint(target).contains(position))
{
public boolean checkIfOnWaypoint(Panel panel) {
if (panel.getWaypoint(target).contains(position)) {
return true;
}
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();
boolean hasPathBelow = false;
for (Path p : paths)
{
if (p.containsPoint(position))
{
for (Path p : paths) {
if (p.containsPoint(position)) {
hasPathBelow = true;
break;
}
Shape containsShape = p.containsPointShape(position);
if (containsShape != null)
{
tar = new Point2D.Double(containsShape.getBounds().getCenterX(), containsShape.getBounds().getCenterY());
if (containsShape != null) {
tar = new Point2D.Double(
containsShape.getBounds().getCenterX(), containsShape
.getBounds().getCenterY());
}
}
if (hasPathBelow)
{
double newRot = Math.atan2(tar.getY() - position.getY(), tar.getX() - position.getX());
if (hasPathBelow) {
double newRot = Math.atan2(tar.getY() - position.getY(), tar.getX()
- position.getX());
int difx = (int) (tar.getX() - position.getX());
int dify = (int) (tar.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10)
{
if (rotation > newRot && distance > 10) {
rotation -= 0.15;
}
else if (rotation < newRot && distance > 10)
{
} else if (rotation < newRot && distance > 10) {
rotation += 0.15;
}
@@ -229,40 +205,30 @@ public class Visitor
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));
if (distance > 10) {
position = new Point2D.Double((position.getX() + directionX
* speed), (position.getY() + directionY * speed));
}
boolean possible = true;
for (DrawObject object : objects)
{
if (hasCollisionDO(object))
{
for (DrawObject object : objects) {
if (hasCollisionDO(object)) {
possible = false;
}
}
for (Visitor object : visitors)
{
if (hasCollision(object) && object != this)
{
for (Visitor object : visitors) {
if (hasCollision(object) && object != this) {
possible = false;
}
}
if (possible == false)
{
if (possible == false) {
position = oldPosition;
rotation += 0.2;
}
}
else
{
} else {
HashMap<Double, Shape> values = new HashMap<Double, Shape>();
for (Path p : paths)
{
for (Shape s : p.getPath())
{
for (Path p : paths) {
for (Shape s : p.getPath()) {
Rectangle b = s.getBounds();
double maxx = b.getMaxX();
double minx = b.getMinX();
@@ -276,16 +242,14 @@ public class Visitor
points[3] = new Point2D.Double(maxx, maxy);
Double lastdistance = null;
for (Point2D.Double point : points)
{
double distance = Point2D.distance(point.getX(), point.getY(), position.getX(), position.getY());
if (lastdistance == null)
{
for (Point2D.Double point : points) {
double distance = Point2D.distance(point.getX(),
point.getY(), position.getX(), position.getY());
if (lastdistance == null) {
lastdistance = distance;
continue;
}
if (distance < lastdistance)
{
if (distance < lastdistance) {
lastdistance = distance;
}
}
@@ -295,35 +259,31 @@ public class Visitor
}
Double lastdistance = null;
Shape lastShape = null;
for (Map.Entry<Double, Shape> e : values.entrySet())
{
for (Map.Entry<Double, Shape> e : values.entrySet()) {
double distance = e.getKey();
if (lastdistance == null)
{
if (lastdistance == null) {
lastdistance = distance;
continue;
}
if (distance < lastdistance)
{
if (distance < lastdistance) {
lastdistance = distance;
}
}
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 dify = (int) (target2.getY() - position.getY());
int distance = (int) Math.sqrt((difx * difx) + (dify * dify));
if (rotation > newRot && distance > 10)
{
if (rotation > newRot && distance > 10) {
rotation -= 0.15;
}
else if (rotation < newRot && distance > 10)
{
} else if (rotation < newRot && distance > 10) {
rotation += 0.15;
}
@@ -333,127 +293,118 @@ public class Visitor
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));
if (distance > 10) {
position = new Point2D.Double((position.getX() + directionX
* speed), (position.getY() + directionY * speed));
}
boolean possible = true;
for (DrawObject object : objects)
{
if (hasCollisionDO(object))
{
for (DrawObject object : objects) {
if (hasCollisionDO(object)) {
possible = false;
}
}
for (Visitor object : visitors)
{
if (hasCollision(object) && object != this)
{
for (Visitor object : visitors) {
if (hasCollision(object) && object != this) {
possible = false;
}
}
if (possible == false)
{
if (possible == false) {
position = oldPosition;
rotation += 0.2;
}
}
}
@SuppressWarnings("static-access")
public void fillActions()
{
public void fillActions() {
int startTime = 540;
int stopTime = 1260;
while (startTime < stopTime)
{
while (startTime < stopTime) {
int random = (int) Math.floor(Math.random() * 51);
if (random < 40)
{
if (random < 30) {
Point2D position = null;
DrawObject targetStage = null;
ArrayList<Event> posEvents = new ArrayList<Event>();
for (Event e : agenda.getEvents())
{
if (startTime >= e.getStart() && startTime < e.getStop())
{
for (Event e : agenda.getEvents()) {
if (startTime >= e.getStart() && startTime < e.getStop()) {
posEvents.add(e);
}
}
int totalPopularity = 0;
for (Event ev : posEvents){
totalPopularity += ev.getExpectedPopularity();
}
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"))
{
Stage s = (Stage) d;
if (s.getStage().getName().equals(evs.getStage().getName()))
{
position = s.getPosition();
targetStage = d;
Random rand = new Random();
int n = rand.nextInt(totalPopularity) + 1;
int currentPop = 0;
if (posEvents != null){
for (Event evs : posEvents){
int before = currentPop;
currentPop = currentPop + evs.getExpectedPopularity();
if (before < n && currentPop >= n){
for (DrawObject d : objects) {
if (d.getFileName().equals("stage")) {
Stage s = (Stage) d;
if (s.getStage().getName()
.equals(evs.getStage().getName())) {
position = s.getPosition();
targetStage = d;
}
}
}
}
}
}
int randomtime = (int) (40 + (Math.random() * (60 - 40)));
if (position != null)
{
Waypoint w = getClosestWaypoint(position);
actions.add(new Action(position, startTime, randomtime, targetStage, w));
if (position != null) {
Waypoint w = getClosedWaypoint(position);
actions.add(new Action(position, startTime, randomtime,
targetStage, w));
}
startTime = startTime + randomtime;
}
else if (random >= 40 && random < 45)
{
} else if (random >= 30 && random < 40) {
Point2D position = null;
DrawObject targetStage = null;
ArrayList<DrawObject> foodPlaces = new ArrayList<DrawObject>();
for (DrawObject d : objects)
{
if (d.getFileName().equals("food"))
{
for (DrawObject d : objects) {
if (d.getFileName().equals("food")) {
foodPlaces.add(d);
}
}
if (foodPlaces.size() != 0)
{
if (foodPlaces.size() != 0) {
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));
Waypoint w = getClosedWaypoint(position);
actions.add(new Action(position, startTime, 35,
targetStage, w));
startTime = startTime + 20;
}
startTime = startTime + 35;
}
else if (random > 45)
{
} else if (random >= 40) {
Point2D position = null;
DrawObject targetStage = null;
ArrayList<DrawObject> toilets = new ArrayList<DrawObject>();
for (DrawObject d : objects)
{
if (d.getFileName().equals("wc"))
{
for (DrawObject d : objects) {
if (d.getFileName().equals("wc")) {
toilets.add(d);
}
}
if (toilets.size() != 0)
{
if (toilets.size() != 0) {
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));
Waypoint w = getClosedWaypoint(position);
actions.add(new Action(position, startTime, 35,
targetStage, w));
startTime = startTime + 20;
}
startTime = startTime + 35;
@@ -462,14 +413,11 @@ public class Visitor
}
}
public Waypoint getClosestWaypoint(Point2D point)
{
public Waypoint getClosedWaypoint(Point2D point) {
Waypoint waypoint = null;
int distance = 10000;
for (Waypoint w : waypoints)
{
if (w.getPosition().distance(point) < distance)
{
for (Waypoint w : waypoints) {
if (w.getPosition().distance(point) < distance) {
waypoint = w;
distance = (int) w.getPosition().distance(point);
}
@@ -477,12 +425,15 @@ public class Visitor
return waypoint;
}
public boolean hasCollisionDO(DrawObject object)
{
public boolean hasCollisionDO(DrawObject object) {
Image image = Images.getImage(filename);
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));
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);
@@ -491,23 +442,26 @@ public class Visitor
transA.rotate(rotation, position.getX(), position.getY());
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 bb = b.createTransformedArea(transB);
if (bb.intersects(aa.getBounds2D()))
{
if (bb.intersects(aa.getBounds2D())) {
return true;
}
return false;
}
public boolean hasCollision(Visitor v)
{
public boolean hasCollision(Visitor v) {
Image image = Images.getImage(filename);
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));
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));
Area aa = new Area(a);
Area bb = new Area(b);
@@ -521,10 +475,9 @@ public class Visitor
Area ra = aa.createTransformedArea(af);
Area rb = bb.createTransformedArea(bf);
if (ra.intersects(rb.getBounds2D()))
{
if (ra.intersects(rb.getBounds2D())) {
return true;
}
return false;
}
}
}
+2 -27
View File
@@ -60,7 +60,7 @@ public class WaypointPopup extends JFrame {
panel1.add(name);
row1.add(panel1);
JTextField tf = new JTextField(wp.getSelf() + "", 10);
JTextField tf = new JTextField(10);
row2.add(tf);
JPanel panel2 = new JPanel();
@@ -73,21 +73,7 @@ public class WaypointPopup extends JFrame {
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);
JTextField tx = new JTextField(8);
row2.add(tx);
JPanel help = new JPanel();
@@ -118,17 +104,6 @@ public class WaypointPopup extends JFrame {
});
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(300,250);
+5 -1
View File
@@ -4,15 +4,19 @@ import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.SwingUtilities;
import Applicatie.Panel;
import Applicatie.PathPopup;
import Applicatie.Waypoint;
import Applicatie.WaypointPopup;
import Objects.DrawObject;
import Objects.Path;
import Objects.Entrance;
public class Mouse extends MouseAdapter
{
@@ -126,7 +130,7 @@ public class Mouse extends MouseAdapter
{
if (SwingUtilities.isRightMouseButton(e))
{
//new PathPopup(clickedPath, panel);
new PathPopup(clickedPath, panel);
}
}
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