diff options
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; + } } |