This commit is contained in:
Yorick
2015-04-08 17:32:10 +02:00
parent 89036d27af
commit d0c0b16585
+31 -65
View File
@@ -5,15 +5,10 @@ import java.awt.Image;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Shape; import java.awt.Shape;
import java.awt.geom.AffineTransform; import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.awt.geom.Area; import java.awt.geom.Area;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -22,7 +17,6 @@ import Agenda.Event;
import Objects.DrawObject; import Objects.DrawObject;
import Objects.Entrance; import Objects.Entrance;
import Objects.Path; import Objects.Path;
import Objects.Stage; import Objects.Stage;
public class Visitor public class Visitor
@@ -368,110 +362,82 @@ public class Visitor
} }
@SuppressWarnings("static-access") @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() * 21); if (random < 40) {
if (random < 40)
{
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; if (posEvents.size() != 0) {
for (Event ev : posEvents) int r = (int) Math.floor(Math.random() * posEvents.size());
{ Event evs = posEvents.get(r);
totalPopularity += ev.getExpectedPopularity(); for (DrawObject d : objects) {
} if (d.getFileName().equals("stage")) {
Stage s = (Stage) d;
int r = (int) Math.floor(Math.random() * totalPopularity); if (s.getStage().getName()
int currentPop = 0; .equals(evs.getStage().getName())) {
for (Event evs : posEvents) position = s.getPosition();
{ targetStage = d;
int before = currentPop;
currentPop += evs.getExpectedPopularity();
if (currentPop >= r && before < 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;
}
} }
} }
} }
} }
int randomtime = (int) (40 + (Math.random() * (60 - 40))); int randomtime = (int) (40 + (Math.random() * (60 - 40)));
if (position != null) if (position != null) {
{
Waypoint w = getClosestWaypoint(position); Waypoint w = getClosestWaypoint(position);
actions.add(new Action(position, startTime, randomtime, targetStage, w)); actions.add(new Action(position, startTime, randomtime,
targetStage, w));
} }
startTime = startTime + randomtime; startTime = startTime + randomtime;
} } else if (random >= 40 && random < 45) {
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 = getClosestWaypoint(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 > 45) {
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 = getClosestWaypoint(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;