diff --git a/pom.xml b/pom.xml index 7376a3d..8fda7bb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 0.10.13 + 0.10.14 Web4Rail jar Java Model Railway Control diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation index 81c1f2d..8cce482 100644 --- a/resources/translations/Application.de.translation +++ b/resources/translations/Application.de.translation @@ -94,6 +94,7 @@ Setup actions : Aktivierungs-Aktionen Signals : Signale SOUTH : Süden Started {} : {} gestartet +StopAllTrains : Alle Züge stoppen StopAuto : Automatikmodus abschalten Straight port\: : Port für gerade STRAIGHT : gerade diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index af89397..c2df283 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -670,7 +670,7 @@ public class Plan extends BaseClass{ public void sensor(int addr, boolean active) { Contact contact = Contact.get(addr); - LOG.debug("contact: {}",isSet(contact) ? contact : addr); + LOG.debug("contact: {}",isSet(contact) ? addr+" / "+contact : addr); if (contact != null) { contact.activate(active); } else { diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 1da4152..9715ca2 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -361,11 +361,13 @@ public class Route extends BaseClass{ Tile lastTile = path.lastElement(); if (lastTile instanceof Contact) { lastTile.set(null); - train.removeFromTrace(lastTile); + if (isSet(train)) train.removeFromTrace(lastTile); + } + if (isSet(train)) { + train.set(endBlock); + train.heading(endDirection.inverse()); + if (train.route == this) train.route = null; } - train.set(endBlock); - train.heading(endDirection.inverse()); - if (train.route == this) train.route = null; train = null; triggeredContacts.clear(); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/Action.java b/src/main/java/de/srsoftware/web4rail/actions/Action.java index 7af4e71..667650f 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/Action.java +++ b/src/main/java/de/srsoftware/web4rail/actions/Action.java @@ -111,6 +111,7 @@ public abstract class Action extends BaseClass { FinishRoute.class, TriggerContact.class, TurnTrain.class, + StopAllTrains.class, StopAuto.class, SetPower.class, SetRelay.class, diff --git a/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java b/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java index f1bca48..1ce2fd5 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java +++ b/src/main/java/de/srsoftware/web4rail/actions/FinishRoute.java @@ -9,7 +9,7 @@ public class FinishRoute extends Action { @Override public boolean fire(Context context) throws IOException { Route route = context.route; - if (route != null) route.finish(); + if (isSet(route)) route.finish(); return true; } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java b/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java new file mode 100644 index 0000000..b73d181 --- /dev/null +++ b/src/main/java/de/srsoftware/web4rail/actions/StopAllTrains.java @@ -0,0 +1,14 @@ +package de.srsoftware.web4rail.actions; + +import java.io.IOException; + +import de.srsoftware.web4rail.moving.Train; + +public class StopAllTrains extends Action { + + @Override + public boolean fire(Context context) throws IOException { + Train.list().forEach(train -> train.stopNow()); + return true; + } +} diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index e33fb4f..470bfe0 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -44,9 +44,7 @@ public class Train extends BaseClass implements Comparable { private static final Logger LOG = LoggerFactory.getLogger(Train.class); private static final String CAR_ID = "carId"; - public static final String HEAD = "train_head"; public static final String LOCO_ID = "locoId"; - public static final String TAIL = "train_tile"; private static final String TRACE = "trace"; private static final HashMap trains = new HashMap<>(); @@ -179,7 +177,7 @@ public class Train extends BaseClass implements Comparable { } } if (!rt.isFreeFor(this)) { // keine belegten Routen wählen - LOG.debug("{} is not free!",rt); +// LOG.debug("{} is not free!",rt); continue; } if (!rt.allowed(context)) continue; @@ -533,7 +531,7 @@ public class Train extends BaseClass implements Comparable { public static Select selector(Train preselected,Collection exclude) { if (isNull(exclude)) exclude = new Vector(); - Select select = new Select(Train.HEAD); + Select select = new Select(Train.class.getSimpleName()); new Tag("option").attr("value","0").content(t("unset")).addTo(select); for (Train train : Train.list()) { if (exclude.contains(train)) continue; @@ -594,7 +592,7 @@ public class Train extends BaseClass implements Comparable { return t("Started {}",this); } - private Object stopNow() { + public Object stopNow() { quitAutopilot(); setSpeed(0); if (isSet(route)) route.reset(); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index 8453632..8e23dec 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -90,8 +90,8 @@ public abstract class Block extends StretchableTile{ @Override public Tile update(HashMap params) throws IOException { if (params.containsKey(NAME)) name=params.get(NAME); - if (params.containsKey(Train.HEAD)) { - int trainId = Integer.parseInt(params.get(Train.HEAD)); + if (params.containsKey(Train.class.getSimpleName())) { + int trainId = Integer.parseInt(params.get(Train.class.getSimpleName())); if (trainId == 0) { if (isSet(train)) train.dropTrace(); train = null;