diff --git a/pom.xml b/pom.xml
index 20dec21..6483874 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 0.11.5
+ 0.11.6
Web4Rail
jar
Java Model Railway Control
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index cfdf233..04bf690 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -27,11 +27,14 @@ click here to setup contact : Hier klicken, um Kontakt auszuwählen
click here to setup relay : Hier klicken, um Relais einzurichten
Command to send to control unit\: : Kommando, welches zur Zentrale gesendet werden soll:
Create action : Aktion erzeugen
+Current location\: {} : Aufenthaltsort: {}
DelayedAction : verzögerte Aktion
delete : entfernen
delete route : Route löschen
+Destination\: : Ziel:
Destination\: {} from {} : Ziel: {} von {}
Direction : Richtung
+Direction\: heading {} : Richtung: nach {}
disabled : deaktiviert
EAST : Osten
editable train properties : veränderliche Zug-Eigenschaften
@@ -64,6 +67,7 @@ new train : neuer Zug
No : keine
No free routes from {} : keine Route von {} frei
NORTH : Norden
+Occupied area\: : Belegte Abschnitte:
Off : Aus
On : An
One way\: : Richtung:
@@ -77,6 +81,7 @@ Properties of {} : Eigenschaften von {}
Properties of {} @ ({},{}) : Eigenschaften von {} @ ({},{})
PushPullTrain : Wendezug
Push-pull train : Wendezug
+{} reached it`s destination! : {} ist am Ziel angekommen!
Reduce speed to {} km/h : Geschwindigkeit auf {} km/h reduzieren
Report Issue : Problem melden
RIGHT : rechts
@@ -85,6 +90,7 @@ Routes using this tile\: : Fahrstraßen, die diesen Abschnitt verwenden:
Route will only be available to trains fulfilling all conditions. : Route ist nur für Züge verfügbar, die alle Bedingungen erfüllen.
Save : speichern
Select contact\: : Kotakt auswählen:
+Select from plan : Auf Plan auswählen
Select relay\: : Relais auswählen:
SendCommand : Kommando senden
Send command \"{}\" to control unit : Kommando „{}“ an Zentrale senden
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 0bd6879..077391e 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -365,7 +365,12 @@ public class Route extends BaseClass{
}
if (isSet(train)) {
train.set(endBlock);
- train.setWaitTime(endBlock.getWaitTime(train));
+ if (endBlock == train.destination()) {
+ train.destination(null).quitAutopilot();
+ endBlock.plan().stream(t("{} reached it`s destination!",train));
+ } else {
+ train.setWaitTime(endBlock.getWaitTime(train));
+ }
train.heading(endDirection.inverse());
if (train.route == this) train.route = null;
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index 06982c8..3a8ba71 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -94,6 +94,7 @@ public class Train extends BaseClass implements Comparable {
if (waitTime > 100) waitTime /=2;
if (stop) return;
Train.this.start();
+ if (isSet(destination)) Thread.sleep(1000); // limit load on PathFinder
}
Thread.sleep(250);
}
@@ -171,25 +172,6 @@ public class Train extends BaseClass implements Comparable {
}
showTrace();
}
-
- @Override
- public int compareTo(Train o) {
- return name().compareTo(o.toString());
- }
-
- public String directedName() {
- String result = name();
- if (isNull(direction)) return result;
- switch (direction) {
- case NORTH:
- case WEST:
- return '←'+result;
- case SOUTH:
- case EAST:
- return result+'→';
- }
- return result;
- }
private Object addCar(HashMap params) {
LOG.debug("addCar({})",params);
@@ -250,6 +232,11 @@ public class Train extends BaseClass implements Comparable {
return new Vector(cars);
}
+ @Override
+ public int compareTo(Train o) {
+ return name().compareTo(o.toString());
+ }
+
private static Object create(HashMap params, Plan plan) {
Locomotive loco = (Locomotive) Locomotive.get(params.get(Train.LOCO_ID));
if (isNull(loco)) return t("unknown locomotive: {}",params.get(ID));
@@ -258,10 +245,33 @@ public class Train extends BaseClass implements Comparable {
return train;
}
+ public Block destination() {
+ return destination;
+ }
+
+ public Train destination(Block dest) {
+ destination = dest;
+ return this;
+ }
+
+ public String directedName() {
+ String result = name();
+ if (isNull(direction)) return result;
+ switch (direction) {
+ case NORTH:
+ case WEST:
+ return '←'+result;
+ case SOUTH:
+ case EAST:
+ return result+'→';
+ }
+ return result;
+ }
+
public Direction direction() {
return direction;
}
-
+
private Object dropCar(HashMap params) {
String carId = params.get(CAR_ID);
if (isSet(carId)) cars.remove(Car.get(carId));
@@ -454,22 +464,6 @@ public class Train extends BaseClass implements Comparable {
locoList().addTo(propList);
carList().addTo(propList);
- new Tag("li").content(t("length: {}",length())).addTo(propList);
-
- if (!trace.isEmpty()) {
- Tag li = new Tag("li").content(t("Occupied area:"));
- Tag ul = new Tag("ul");
- for (Tile tile : trace) new Tag("li").content(tile.toString()).addTo(ul);
- ul.addTo(li).addTo(propList);
- }
-
- Tag dest = new Tag("li").content(t("Destination: "));
- if (isNull(destination)) {
- new Button(t("Select from plan"),"return selectDest("+id+");").addTo(dest);
- } else {
- link("span",Map.of(REALM,REALM_PLAN,ID,destination.id(),ACTION,ACTION_CLICK),destination.toString()).addTo(dest);
- }
- dest.addTo(propList);
if (isSet(currentBlock)) {
link("li",Map.of(REALM,REALM_PLAN,ID,currentBlock.id(),ACTION,ACTION_CLICK),t("Current location: {}",currentBlock)).addTo(propList);
@@ -486,14 +480,33 @@ public class Train extends BaseClass implements Comparable {
actions.addTo(propList);
}
+ Tag dest = new Tag("li").content(t("Destination:")+NBSP);
+ if (isNull(destination)) {
+ new Button(t("Select from plan"),"return selectDest("+id+");").addTo(dest);
+ } else {
+ link("span",Map.of(REALM,REALM_PLAN,ID,destination.id(),ACTION,ACTION_CLICK),destination.toString()).addTo(dest);
+ }
+
+ dest.addTo(propList);
if (isSet(route)) {
link("li", Map.of(REALM,REALM_ROUTE,ID,route.id(),ACTION,ACTION_PROPS), route).addTo(propList);
}
if (isSet(direction)) new Tag("li").content(t("Direction: heading {}",direction)).addTo(propList);
- Tag tagList = new Tag("ul");
- for (String tag : tags()) new Tag("li").content(tag).addTo(tagList);
- tagList.addTo(new Tag("li").content(t("Tags"))).addTo(propList);
+ SortedSet allTags = tags();
+ if (!allTags.isEmpty()) {
+ Tag tagList = new Tag("ul");
+ for (String tag : allTags) new Tag("li").content(tag).addTo(tagList);
+ tagList.addTo(new Tag("li").content(t("Tags"))).addTo(propList);
+ }
+ new Tag("li").content(t("length: {}",length())).addTo(propList);
+
+ if (!trace.isEmpty()) {
+ Tag li = new Tag("li").content(t("Occupied area:"));
+ Tag ul = new Tag("ul");
+ for (Tile tile : trace) new Tag("li").content(tile.toString()).addTo(ul);
+ ul.addTo(li).addTo(propList);
+ }
propList.addTo(fieldset).addTo(window);
return window;
@@ -656,8 +669,4 @@ public class Train extends BaseClass implements Comparable {
public Block currentBlock() {
return currentBlock;
}
-
- public Block destination() {
- return destination;
- }
}