diff --git a/pom.xml b/pom.xml index 3ee4895..27e3a13 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 0.10.1 + 0.10.2 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 0138141..a7dd9ad 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -342,7 +342,10 @@ public class Route extends BaseClass{ setSignals(Signal.STOP); for (Tile tile : path) tile.setRoute(null); Tile lastTile = path.lastElement(); - if (lastTile instanceof Contact) lastTile.set(null); + if (lastTile instanceof Contact) { + lastTile.set(null); + train.removeFromTrace(lastTile); + } train.set(endBlock); train.heading(endDirection.inverse()); } diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index a5372c2..4f963ad 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -589,6 +589,7 @@ public class Train extends BaseClass implements Comparable { public void showTrace() { int remainingLength = length(); + if (remainingLength<1) remainingLength=1; for (int i=0; i0) { @@ -605,4 +606,9 @@ public class Train extends BaseClass implements Comparable { public void dropTrace() { while (!trace.isEmpty()) trace.removeFirst().set(null); } + + public void removeFromTrace(Tile tile) { + trace.remove(tile); + + } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index f59710f..fb04e51 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -102,12 +102,13 @@ public abstract class Block extends StretchableTile{ if (params.containsKey(Train.HEAD)) { int trainId = Integer.parseInt(params.get(Train.HEAD)); if (trainId == 0) { + if (isSet(train)) train.dropTrace(); train = null; } else { - Train dummy = Train.get(trainId); - if (isSet(dummy) && dummy != train) { - dummy.set(this); - dummy.dropTrace(); + Train newTrain = Train.get(trainId); + if (isSet(newTrain) && newTrain != train) { + newTrain.set(this); + newTrain.dropTrace(); } } }