1 package org.opentrafficsim.road.gtu.lane.tactical.lmrs;
2
3 import java.util.function.Supplier;
4
5 import org.djunits.value.vdouble.scalar.Duration;
6 import org.djunits.value.vdouble.scalar.Length;
7 import org.opentrafficsim.core.dsol.OtsSimulatorInterface;
8 import org.opentrafficsim.road.gtu.lane.perception.object.PerceivedTrafficLight;
9 import org.opentrafficsim.road.network.lane.object.trafficlight.TrafficLight;
10 import org.opentrafficsim.road.network.lane.object.trafficlight.TrafficLightColor;
11
12
13
14
15
16
17
18
19
20 public class PerceivedTrafficLightChannel extends PerceivedTrafficLight
21 {
22
23
24 private final Supplier<Duration> perceptionDelay;
25
26
27 private final OtsSimulatorInterface simulator;
28
29
30
31
32
33
34
35
36
37 public PerceivedTrafficLightChannel(final TrafficLight trafficLight, final Length distance, final boolean turnOnRed,
38 final Supplier<Duration> perceptionDelay)
39 {
40 super(trafficLight, distance, turnOnRed);
41 this.perceptionDelay = perceptionDelay;
42 this.simulator = trafficLight.getSimulator();
43 }
44
45
46
47
48
49 @Override
50 public TrafficLightColor getTrafficLightColor()
51 {
52 Duration when = this.simulator.getSimulatorTime().minus(this.perceptionDelay.get());
53 return getTrafficLight().getTrafficLightColor(when);
54 }
55
56 }