diff --git a/pom.xml b/pom.xml
index 2c9f02c..5f6dc66 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.5.30
+ 1.5.31
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/logback.xml b/resources/logback.xml
index 178bdde..c8fefde 100644
--- a/resources/logback.xml
+++ b/resources/logback.xml
@@ -9,7 +9,7 @@
WARN
- Brake, Contact, Feed, Route, e, u
+ BaseClass, ControlUnit, RoutePrepper, Tile
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index 00f9589..a57d7e7 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -87,6 +87,7 @@ Cars : Fahrzeuge
cars : Fahrzeugen teilen
Clear destinations : Ziele löschen
Clear destinations of train : Ziele des Zugs löschen
+Clear trigger : Trigger löschen
Clicked tile is not a {}! : Angeklickte Kachel ist kein {}!
Click here to add conditions : Hier klicken, um Bedingungen hinzuzufügen
Click here to select block! : Hier klicken, um Block auszuwählen!
diff --git a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java
index 08fab75..b953ab8 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java
@@ -117,7 +117,10 @@ public class AddRemoveDestination extends Action {
formInputs.add(t("Turn at destination"),new Checkbox(TURN, t("Turn"), destination.turn()));
formInputs.add(t("Shunting"),new Checkbox(SHUNTING, t("Shunting"), destination.shunting()));
}
- formInputs.add(t("Trigger Contact/Switch at destination")+": "+(isNull(destinationTrigger) ? t("unset") : destinationTrigger),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,CONTACT)));
+ span = new Tag("span");
+ button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,CONTACT)).addTo(span);
+ button(t("Clear trigger"),Map.of(ACTION,ACTION_UPDATE,CONTACT,"0")).addTo(span);
+ formInputs.add(t("Trigger Contact/Switch at destination")+": "+(isNull(destinationTrigger) ? t("unset") : destinationTrigger),span);
return super.properties(preForm, formInputs, postForm,errors);
}
@@ -146,8 +149,14 @@ public class AddRemoveDestination extends Action {
}
}
if (params.containsKey(CONTACT)) {
- Tile tile = Tile.get(Id.from(params,CONTACT));
+ Id id = Id.from(params,CONTACT);
+ if (id.equals(0)) {
+ destinationTrigger = null;
+ return properties();
+ }
+ Tile tile = Tile.get(id);
if (tile instanceof Contact || tile instanceof Switch) destinationTrigger = tile;
+ return properties();
}
if (isSet(destination)) {
destination.turn("on".equals(params.getString(TURN)));
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index 71bf8ef..258acaf 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -9,6 +9,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
@@ -454,6 +455,7 @@ public class Train extends BaseClass implements Comparable {
Block endBlock = endedRoute.endBlock();
Block startBlock = endedRoute.startBlock();
boolean resetDest = endedRoute.endsAt(destination);
+ LinkedList triggerRef = new LinkedList<>();
if (resetDest){
destination = null;
@@ -467,17 +469,9 @@ public class Train extends BaseClass implements Comparable {
}
if (isNull(destTag)) {
- Tile trigger = destinationTrigger; // quitAutopilot drops destinationTrigger
+ triggerRef.add(destinationTrigger); // quitAutopilot drops destinationTrigger
quitAutopilot();
plan.stream(t("{} reached it`s destination!",this));
- if (isSet(trigger)) new DelayedExecution(1000,this) {
-
- @Override
- public void execute() {
- if (trigger instanceof Contact) ((Contact)trigger).trigger(200);
- if (trigger instanceof Switch) ((Switch)trigger).trigger(new Context(Train.this));
- }
- };
}
}
if (isSet(brake)) brake.updateTime();
@@ -493,6 +487,16 @@ public class Train extends BaseClass implements Comparable {
trace.add(endBlock);
if (!trace.contains(startBlock)) startBlock.dropTrain(this);
stuckTrace = null;
+ if (!triggerRef.isEmpty()) new DelayedExecution(1000,this) {
+
+ @Override
+ public void execute() {
+ Tile trigger = triggerRef.getFirst();
+ if (trigger instanceof Contact) ((Contact)trigger).trigger(200);
+ if (trigger instanceof Switch) ((Switch)trigger).trigger(new Context(Train.this));
+ }
+ };
+
if (autopilot) {
if (isNull(waitTime)) waitTime = 0;
if (waitTime>0) plan.stream(t("{} waiting {} secs.",this,(int)(waitTime/1000)));
diff --git a/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java b/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
index a6affc9..2ed6a70 100644
--- a/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
+++ b/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
@@ -101,7 +101,7 @@ public class BrakeProcess extends BaseClass implements Runnable{
route.brakeTime(brakeId,newTimeStep);
calculated = calcDistance(newTimeStep);
LOG.debug("Corrected brake timestep from {} to {} ms for {} @ {}.",timeStep,newTimeStep,train,route);
- LOG.debug("Differemce from estimated distance: {} ({}%)",distance-calculated,100*(distance-calculated)/(float)distance);
+ LOG.debug("Difference from estimated distance: {} ({}%)",distance-calculated,100*(distance-calculated)/(float)distance);
}
}
}