aboutsummaryrefslogtreecommitdiff
path: root/Week14 Route 66/src/OO14route66/Regelaar.java
diff options
context:
space:
mode:
authorCamil Staps2015-05-28 23:50:19 +0200
committerCamil Staps2015-05-28 23:50:19 +0200
commita8281523e2bbee4a1b4688f175896fe9c6b30c55 (patch)
treef519960e5c48f215edf8a4f1a75917200f329eb4 /Week14 Route 66/src/OO14route66/Regelaar.java
parentStart w14 (diff)
This does seem to work a bit... kindof...
Diffstat (limited to 'Week14 Route 66/src/OO14route66/Regelaar.java')
-rw-r--r--Week14 Route 66/src/OO14route66/Regelaar.java40
1 files changed, 39 insertions, 1 deletions
diff --git a/Week14 Route 66/src/OO14route66/Regelaar.java b/Week14 Route 66/src/OO14route66/Regelaar.java
index 1fc336f..bf4cbfd 100644
--- a/Week14 Route 66/src/OO14route66/Regelaar.java
+++ b/Week14 Route 66/src/OO14route66/Regelaar.java
@@ -6,10 +6,48 @@
package OO14route66;
+import java.util.HashMap;
+import java.util.Map;
+
/**
*
* @author pieterkoopman
*/
-class Regelaar {
+public class Regelaar {
+
+ private static Regelaar instance;
+
+ Map<Car, Integer> locations;
+
+ protected Regelaar() {
+ locations = new HashMap<>();
+ }
+
+ public static Regelaar getInstance() {
+ if (instance == null) {
+ instance = new Regelaar();
+ }
+ return instance;
+ }
+
+ public synchronized void setLocation(Car car, int location) {
+ if (locations.containsKey(car)) {
+ locations.remove(car);
+ }
+ locations.put(car, location);
+ }
+
+ public synchronized boolean isSafeLocation(Car car, int requested_location) {
+ for (Map.Entry<Car, Integer> location : locations.entrySet()) {
+ Car that_car = location.getKey();
+ if (that_car != car &&
+ that_car.getDirection() == car.getDirection() &&
+ that_car.getLocation() > requested_location &&
+ that_car.getLocation() < requested_location + Car.CARLENGTH + Car.MINCARSPACE) {
+ return false;
+ }
+ }
+ return true;
+ }
}