diff --git a/pom.xml b/pom.xml
index 89706d5..a801ce9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.2.19
+ 1.2.20
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java
index c2e0c08..5c94935 100644
--- a/src/main/java/de/srsoftware/web4rail/BaseClass.java
+++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java
@@ -16,6 +16,7 @@ import org.slf4j.LoggerFactory;
import de.keawe.tools.translations.Translation;
import de.srsoftware.tools.Tag;
+import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.actions.Action;
import de.srsoftware.web4rail.conditions.Condition;
import de.srsoftware.web4rail.moving.Car;
@@ -55,6 +56,7 @@ public abstract class BaseClass implements Constants{
private Condition condition;
private Car car;
private Contact contact;
+ private Direction direction;
public Context(BaseClass object) {
main = object;
@@ -96,6 +98,15 @@ public abstract class BaseClass implements Constants{
public Contact contact() {
return contact;
}
+
+ public Direction direction() {
+ return direction;
+ }
+
+ public Context direction(Direction newDirection) {
+ direction = newDirection;
+ return this;
+ }
public Route route() {
return route;
@@ -115,6 +126,7 @@ public abstract class BaseClass implements Constants{
StringBuffer sb = new StringBuffer(getClass().getSimpleName());
sb.append("(");
sb.append(t("Train: {}",train));
+ if (isSet(direction)) sb.append(", "+t("Direction: {}",direction));
if (isSet(route)) sb.append(", "+t("Route: {}",route));
if (isSet(contact)) sb.append(", "+t("Contact: {}",contact));
sb.append(")");
diff --git a/src/main/java/de/srsoftware/web4rail/PathFinder.java b/src/main/java/de/srsoftware/web4rail/PathFinder.java
index cdffd96..b8ec8f7 100644
--- a/src/main/java/de/srsoftware/web4rail/PathFinder.java
+++ b/src/main/java/de/srsoftware/web4rail/PathFinder.java
@@ -36,7 +36,7 @@ public class PathFinder extends BaseClass{
if (error) return availableRoutes;
Block destination = train.destination();
- Direction direction = train.direction();
+ Direction direction = context.direction();
/* if (isSet(direction)) {
LOG.debug("{}Looking for {}-bound routes from {}",inset,direction,block);
} else {
@@ -68,8 +68,7 @@ public class PathFinder extends BaseClass{
priority = 1_000_000;
} else {
LOG.debug("{}- Candidate: {}",inset,routeCandidate.shortName());
- Context forwardContext = new Context(train);
- forwardContext.block(routeCandidate.endBlock()).route(null);
+ Context forwardContext = new Context(train).block(routeCandidate.endBlock()).route(null).direction(routeCandidate.endDirection);
visitedRoutes.add(routeCandidate);
TreeMap> forwardRoutes = availableRoutes(forwardContext,visitedRoutes);
visitedRoutes.remove(routeCandidate);
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index 7cbf282..0761a99 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -574,7 +574,7 @@ public class Train extends BaseClass implements Comparable {
}
public void reserveNext() {
- Context context = new Context(this).route(route).block(route.endBlock());
+ Context context = new Context(this).route(route).block(route.endBlock()).direction(route.endDirection);
Route nextRoute = PathFinder.chooseRoute(context);
if (isNull(nextRoute)) return;
@@ -685,7 +685,7 @@ public class Train extends BaseClass implements Comparable {
if (maxSpeed() == 0) return t("Train has maximum speed of 0 {}, cannot go!",speedUnit);
if (isSet(route)) route.reset(); // reset route previously chosen
- Context context = new Context(this).block(this.currentBlock);
+ Context context = new Context(this).block(currentBlock).direction(direction);
String error = null;
if (isSet(nextRoute)) {
route = nextRoute;