From e9b950fd515657855a0b6e9ecb327e52df4b6aab Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Sun, 13 Dec 2020 15:53:32 +0100 Subject: [PATCH] added new reverse option --- pom.xml | 2 +- .../translations/Application.de.translation | 5 ++- .../java/de/srsoftware/web4rail/Route.java | 2 +- .../de/srsoftware/web4rail/moving/Car.java | 2 +- .../web4rail/moving/Locomotive.java | 5 +-- .../de/srsoftware/web4rail/moving/Train.java | 41 +++++++++++++++---- 6 files changed, 41 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 646abde..531daa9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.2.45 + 1.2.46 Web4Rail jar Java Model Railway Control diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation index fbdf1b2..840d496 100644 --- a/resources/translations/Application.de.translation +++ b/resources/translations/Application.de.translation @@ -100,6 +100,7 @@ export : exportieren Faster (10 {}) : 10 {} schneller Firing {} : starte {} FinishRoute : Route abschließen +For each {} do: Für jede(n) {}: forward : vorwärts Found {} routes. : {} Routen gefunden. FreeStartBlock : Start-Block freigeben @@ -111,6 +112,7 @@ Help : Hilfe (id\: {}, length\: {}) : (Id: {}, Länge: {}) if ({})\: : falls ({}): inverted : invertiert +Inverts the direction {} is heading to. : Kehrt die Richtung, in welche {} fährt, um. {} is oriented {} : {} ist {} gerichtet known cars : bekannte Waggons known locomotives : bekannte Lokomotiven @@ -171,7 +173,7 @@ quit autopilot : Autopilot beenden Relays and Turnouts : Relais und Weichen Relay/Turnout : Relais/Weiche Report Issue : Problem melden -reverse : rückwärts +reverse : wenden Reversed {}. : {} umgedreht. RIGHT : rechts Right port\: : Port für rechts @@ -272,6 +274,7 @@ TurnoutRW : WeicheRW Turnouts : Weichen TurnTrain : Fahrtrichtung umkehren turn within train : innerhalb des Zugs drehen +Turns the train, as if it went through a loop. : Dreht den ZUg, als wenn er eine Wendeschleife passiert hätte. Unknown action\: {} : Unbekannte Aktion: {} unset : ungesetzt Wait {} ms, then\: : {} ms warten, dann: diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 2bf859e..def87c1 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -265,7 +265,7 @@ public class Route extends BaseClass { private Fieldset basicProperties() { Fieldset fieldset = new Fieldset(t("Route properties")); - if (isSet(train)) train.link("span",t("Train: {}",train)).addTo(fieldset); + if (isSet(train)) train.link("span",t("Train")+": "+train).addTo(fieldset); Tag list = new Tag("ul"); Plan.addLink(startBlock, t("Origin: {} to {}",startBlock.name,startDirection), list); Plan.addLink(endBlock, t("Destination: {} from {}",endBlock.name,endDirection.inverse()), list); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java index d32db45..a266065 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Car.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java @@ -232,7 +232,7 @@ public class Car extends BaseClass implements Comparable{ formInputs.add(t("Tags"), new Input(TAGS,String.join(", ", tags))); Tag div = new Tag("div"); new Input(MAX_SPEED, maxSpeedForward).numeric().addTo(new Tag("p")).content(NBSP+speedUnit+NBSP+t("forward")).addTo(div); - new Input(MAX_SPEED_REVERSE, maxSpeedReverse).numeric().addTo(new Tag("p")).content(NBSP+speedUnit+NBSP+t("reverse")).addTo(div); + new Input(MAX_SPEED_REVERSE, maxSpeedReverse).numeric().addTo(new Tag("p")).content(NBSP+speedUnit+NBSP+t("backward")).addTo(div); formInputs.add(t("Maximum Speed"),div); Fieldset fieldset = new Fieldset(t("Train")); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java index c21b79b..d7ec927 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java @@ -122,7 +122,7 @@ public class Locomotive extends Car implements Constants,Device{ } params.put(ACTION, ACTION_TURN); - new Button(t("Turn"),params).clazz(ACTION_TURN).addTo(direction); + new Button(t("Turn"),params).title(t("Inverts the direction {} is heading to.",locoOrTrain)).clazz(ACTION_TURN).addTo(direction); if (isSet(train)) { Block currentBlock = train.currentBlock(); @@ -147,8 +147,7 @@ public class Locomotive extends Car implements Constants,Device{ params.put(ACTION, e.getValue()); new Button(t(e.getKey()),params).addTo(functions); }); - functions.addTo(fieldset); - + functions.addTo(fieldset); return fieldset; } diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 57482e0..43d6f58 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -71,6 +71,8 @@ public class Train extends BaseClass implements Comparable { private static final String TAGS = "tags"; private static final String DESTINATION = "destination"; + + private static final String ACTION_REVERSE = "reverse"; private HashSet tags = new HashSet(); private boolean f1,f2,f3,f4; @@ -134,7 +136,7 @@ public class Train extends BaseClass implements Comparable { Id id = Id.from(params); Train train = trains.get(id); if (isNull(train)) return(t("No train with id {}!",id)); - switch (action) { + switch (action) { case ACTION_ADD: return train.addCar(params); case ACTION_AUTO: @@ -157,6 +159,8 @@ public class Train extends BaseClass implements Comparable { return train.properties(); case ACTION_QUIT: return train.quitAutopilot(); + case ACTION_REVERSE: + return train.reverse(); case ACTION_SLOWER10: return train.slower(10); case ACTION_START: @@ -501,7 +505,10 @@ public class Train extends BaseClass implements Comparable { carList().addTo(propList); if (isSet(currentBlock)) currentBlock.button(currentBlock.toString()).addTo(new Tag("li").content(t("Current location:")+NBSP)).addTo(propList); - if (isSet(direction)) new Tag("li").content(t("Direction: heading {}",direction)).addTo(propList); + Tag directionLi = null; + if (isSet(direction)) directionLi = new Tag("li").content(t("Direction: heading {}",direction)+NBSP); + if (isNull(directionLi)) directionLi = new Tag("li"); + button(t("reverse"), Map.of(ACTION,ACTION_REVERSE)).title(t("Turns the train, as if it went through a loop.")).addTo(directionLi).addTo(propList); Tag dest = new Tag("li").content(t("Destination:")+NBSP); if (isNull(destination)) { @@ -584,6 +591,22 @@ public class Train extends BaseClass implements Comparable { } } + /** + * This turns the train as if it went through a loop. Example: + * before: CabCar→ MiddleCar→ Loco→ + * after: ←Loco ←MiddleCar ←CabCar + */ + private Tag reverse() { + LOG.debug("train.reverse();"); + + if (isSet(direction)) { + direction = direction.inverse(); + reverseTrace(); + } + if (isSet(currentBlock)) plan.place(currentBlock); + return properties(); + } + private void reverseTrace() { LinkedList reversed = new LinkedList(); LOG.debug("Trace: {}",trace); @@ -808,17 +831,17 @@ public class Train extends BaseClass implements Comparable { return name(); } + /** + * this inverts the direction the train is heading to. Example: + * before: CabCar→ MiddleCar→ Loco→ + * after: ←CabCar ←MiddleCar ←Loco + * @return + */ public Tag turn() { LOG.debug("train.turn()"); - for (Car car : cars) car.turn(); Collections.reverse(cars); - if (isSet(direction)) { - direction = direction.inverse(); - reverseTrace(); - } - if (isSet(currentBlock)) plan.place(currentBlock); - return properties(); + return reverse(); } protected Train update(HashMap params) {