diff options
author | Camil Staps | 2015-05-28 23:50:19 +0200 |
---|---|---|
committer | Camil Staps | 2015-05-28 23:50:19 +0200 |
commit | a8281523e2bbee4a1b4688f175896fe9c6b30c55 (patch) | |
tree | f519960e5c48f215edf8a4f1a75917200f329eb4 /Week14 Route 66/src/OO14route66/Regelaar.java | |
parent | Start 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.java | 40 |
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; + } } |