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.");
}