diff --git a/pom.xml b/pom.xml index d27c120..20bfd9b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.4.24 + 1.4.25 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 517aeef..86273c3 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -993,7 +993,11 @@ public class Train extends BaseClass implements Comparable { public String start(boolean auto) { LOG.debug("{}.start({})",this,auto?"auto":""); - autopilot |= auto; + if (auto != autopilot) { + autopilot |= auto; + if (isSet(currentBlock)) plan.place(currentBlock); + } + if (isSet(nextPreparedRoute)) { LOG.debug("starting nextPreparedRoute: {}",nextPreparedRoute); if (nextPreparedRoute.startNow()) { @@ -1049,10 +1053,12 @@ public class Train extends BaseClass implements Comparable { endBrake(); setSpeed(0); quitAutopilot(); - if (isSet(route) && route.hasTriggeredContacts()) { + if (isSet(route)) { + if (route.hasTriggeredContacts()) { stuckTrace = new HashSet(); - for (Tile tile : route.path()) { // collect occupied tiles of route. stuckTrace is considered during next route search - if (trace.contains(tile)) stuckTrace.add(tile); + for (Tile tile : route.path()) { // collect occupied tiles of route. stuckTrace is considered during next route search + if (trace.contains(tile)) stuckTrace.add(tile); + } } route.reset(); route = null; @@ -1169,7 +1175,7 @@ public class Train extends BaseClass implements Comparable { } } } - for (Tile tile : trace) tile.free(this); + dropTrace(false); trace = newTrace; return context; }