From d383ae4dc8a81452649209925d08b87fffd83147 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Sun, 11 Apr 2021 20:10:11 +0200 Subject: [PATCH] bugfixes --- pom.xml | 2 +- resources/js/plan.js | 2 +- src/main/java/de/srsoftware/web4rail/Route.java | 4 ++++ .../java/de/srsoftware/web4rail/moving/Train.java | 12 +++++++++--- .../de/srsoftware/web4rail/threads/RoutePrepper.java | 2 ++ .../java/de/srsoftware/web4rail/tiles/Block.java | 8 ++++++-- 6 files changed, 23 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index fcce1ed..d6567bc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.4.20 + 1.4.21 Web4Rail jar Java Model Railway Control diff --git a/resources/js/plan.js b/resources/js/plan.js index 7a0043e..75887cf 100644 --- a/resources/js/plan.js +++ b/resources/js/plan.js @@ -26,7 +26,7 @@ function addMessage(txt){ messages.unshift(txt); if (messages.length>5) messages.pop(); updateMessages(); - setTimeout(fadeMessage,30000); + setTimeout(fadeMessage,60000); } function addTile(x,y){ diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 7ae9e58..fab643e 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -428,6 +428,10 @@ public class Route extends BaseClass { return nextPreparedRoute; } + public boolean hasTriggeredContacts() { + return triggeredContacts.size()>0; + } + public Id id() { if (isNull(id)) id = new Id(""+(generateName().hashCode())); return id; diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index f26c98e..b41c691 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -195,7 +195,10 @@ public class Train extends BaseClass implements Comparable { public String brakeId(boolean reversed) { TreeSet carIds = new TreeSet(); - cars.stream().map(car -> car.id()+":"+(car.orientation == reversed ? "r":"f")).forEach(carIds::add); + cars.stream() + .filter(car -> car instanceof Locomotive) + .map(car -> car.id()+":"+(car.orientation == reversed ? "r":"f")) + .forEach(carIds::add); String brakeId = md5sum(carIds); LOG.debug("generated new {} brake id for {}: {}",reversed?"backward":"forward",this,brakeId); return brakeId; @@ -885,7 +888,10 @@ public class Train extends BaseClass implements Comparable { public Train set(Block newBlock) { LOG.debug("{}.set({})",this,newBlock); if (isSet(currentBlock)) { - if (newBlock == currentBlock) return this; + if (newBlock == currentBlock) { + if (currentBlock.occupyingTrain() != this) currentBlock.setTrain(this); + return this; + } currentBlock.free(this); } currentBlock = newBlock; @@ -1042,7 +1048,7 @@ public class Train extends BaseClass implements Comparable { endBrake(); setSpeed(0); quitAutopilot(); - if (isSet(route)) { + if (isSet(route) && 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); diff --git a/src/main/java/de/srsoftware/web4rail/threads/RoutePrepper.java b/src/main/java/de/srsoftware/web4rail/threads/RoutePrepper.java index b2370b3..5dd959d 100644 --- a/src/main/java/de/srsoftware/web4rail/threads/RoutePrepper.java +++ b/src/main/java/de/srsoftware/web4rail/threads/RoutePrepper.java @@ -78,6 +78,8 @@ public class RoutePrepper extends BaseClass implements Runnable{ LOG.debug("{} is heading for {}, starting breadth-first search…",train,destination); HashMap predecessors = new HashMap<>() { + private static final long serialVersionUID = -42682947866294566L; + public String toString() { return entrySet().stream() .sorted((e1,e2) -> e1.getValue().toString().compareTo(e2.getValue().toString())) diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index 9138096..e1efd08 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -503,8 +503,12 @@ public abstract class Block extends StretchableTile{ if (isSet(newTrain) && newTrain != occupyingTrain()) { free(occupyingTrain()); newTrain.dropTrace(); - if (connections(newTrain.direction()).isEmpty()) newTrain.heading(null); - newTrain.set(this); + if (connections(newTrain.direction()).isEmpty()) newTrain.heading(null); + newTrain.set(this); + } + if (newTrain.currentBlock() != this) { + newTrain.dropTrace(); + newTrain.set(this); } } }