diff --git a/pom.xml b/pom.xml
index 242c403..685ad2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.3.55
+ 1.3.56
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 63a5c80..33c8843 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -386,7 +386,7 @@ public class Route extends BaseClass {
private void free() {
for (Tile tile : path) {
- if (train.onTrace(tile)) {
+ if (isSet(train) && train.onTrace(tile)) {
tile.setState(Status.OCCUPIED, train);
} else tile.free();
}
@@ -746,8 +746,8 @@ public class Route extends BaseClass {
public boolean reset() {
LOG.debug("{}.reset()",this);
-
- // TODO
+ free();
+ train = null;
return true;
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index a3d90d5..09ec77a 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -932,7 +932,11 @@ public class Train extends BaseClass implements Comparable {
public Object stopNow() {
setSpeed(0);
- listeners.forEach(listener -> listener.on(Listener.Signal.STOP));
+ listeners.forEach(listener -> listener.on(Listener.Signal.STOP)); // abort PathFinder
+ if (isSet(route)) {
+ route.reset();
+ route = null;
+ }
return properties();
}
diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
index 2e60e05..db91815 100644
--- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
+++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java
@@ -85,7 +85,7 @@ public class Contact extends Tile{
state = true;
if (isSet(timer)) timer.abort();
Context context = new Context(this);
- if (isSet(train)) {
+ if (isSet(train())) {
train.contact(this);
context.train(train);
}