From f7aee127899825f370ae7f8caee8d97d0e62edac Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Fri, 4 Dec 2020 19:40:50 +0100 Subject: [PATCH] bugfixes --- pom.xml | 2 +- src/main/java/de/srsoftware/web4rail/BaseClass.java | 12 +++++++++++- .../de/srsoftware/web4rail/actions/ActionList.java | 2 +- .../web4rail/actions/ConditionalAction.java | 2 +- .../srsoftware/web4rail/actions/SetContextTrain.java | 2 +- .../java/de/srsoftware/web4rail/moving/Train.java | 6 ++++-- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index e47be07..6251c89 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.2.21 + 1.2.22 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java index cea381a..4210cbc 100644 --- a/src/main/java/de/srsoftware/web4rail/BaseClass.java +++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java @@ -88,7 +88,17 @@ public abstract class BaseClass implements Constants{ } public Context clone() { - return new Context(main); + Context clone = new Context(main); + clone.tile = tile; + clone.block = block; + clone.train = train; + clone.route = route; + clone.action = action; + clone.condition = condition; + clone.car = car; + clone.contact = contact; + clone.direction = direction; + return clone; } public Condition condition() { diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java index ea55a7d..b67d735 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java @@ -180,7 +180,7 @@ public class ActionList extends Action implements Iterable{ action.remove(); return context.properties(); case ACTION_MOVE: - return action.moveUp() ? action.properties() : t("No action with id {} found!",actionId); + return action.moveUp() ? action.context().properties() : t("No action with id {} found!",actionId); case ACTION_PROPS: return action.properties(); case ACTION_UPDATE: diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java index e1abf72..e9bdd24 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java @@ -29,7 +29,7 @@ public class ConditionalAction extends ActionList { @Override public boolean fire(Context context) { for (Condition condition : conditions) { - if (!condition.fulfilledBy(context)) return true; + if (!condition.fulfilledBy(context)) return false; } return super.fire(context.clone()); // actions, that happen within the conditional action list must not modify the global context. } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java index 0e599f6..7f314b4 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java @@ -70,7 +70,7 @@ public class SetContextTrain extends Action { LOG.debug("update: {}",params); Id trainId = Id.from(params,Train.class.getSimpleName()); if (isSet(trainId)) train = Train.get(trainId); - return properties(); + return super.update(params); } } diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 2d19c9a..700009b 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -197,6 +197,7 @@ public class Train extends BaseClass implements Comparable { if (isNull(autopilot)) { autopilot = new Autopilot(); autopilot.start(); + if (isSet(currentBlock)) plan.place(currentBlock); } return t("{} now in auto-mode",this); } @@ -276,7 +277,7 @@ public class Train extends BaseClass implements Comparable { public String directedName() { String result = name(); - if (isSet(autopilot)) result="•"+result; + if (isSet(autopilot)) result="℗"+result; if (isNull(direction)) return result; switch (direction) { case NORTH: @@ -560,7 +561,8 @@ public class Train extends BaseClass implements Comparable { } if (isSet(autopilot)) { autopilot.stop = true; - autopilot = null; + autopilot = null; + if (isSet(currentBlock)) plan.place(currentBlock); return t("{} stopping at next block.",this); } else return t("autopilot not active."); }