diff --git a/pom.xml b/pom.xml
index 0e6b35c..de614be 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0de.srsoftwareweb4rail
- 1.3.11
+ 1.3.12Web4RailjarJava Model Railway Control
diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation
index 335ca3c..3276d18 100644
--- a/resources/translations/Application.de.translation
+++ b/resources/translations/Application.de.translation
@@ -46,6 +46,7 @@ BlockFree : Blockbelegung
Block {} is free : Block {} ist frei
Block {} is occupied : Block {} ist belegt
Block properties : Block-Eigenschaften
+blocks of train : Blöcke des Zugs
{}bound : nach {}
BrakeCancel : Bremsvorgang abbrechen
BrakeStart : Bremsvorgang starten
@@ -139,6 +140,7 @@ known cars : bekannte Waggons
known locomotives : bekannte Lokomotiven
known trains : bekannte Züge
Label for state {} : Beschriftung für Status {}
+Last blocks : Letzte Blöcke
learn : lernen
LEFT : links
Left port\: : Port für links
@@ -173,6 +175,7 @@ NORTH : Norden
Not connected to other bridge part! : Nicht mit anderem Brücken-Teil verbunden!
Notes : Notizen
No tile moved. : keine Kachel verschoben.
+{} not within last {} blocks of train : {} ist nicht in den letzten {} Blöcken des Zugs
{} now heading for {} : {} ist nun unterwegs nach {}
{} now in auto-mode : {} ist nun im Automatikmodus
Occupied area\: : Belegte Abschnitte:
@@ -221,6 +224,7 @@ Route will only be available, if all conditions are fulfilled. : Route ist nur v
Save "{}" : „{}“ speichern
Save : speichern
SavePlan : Plan speichern
+Seek in last : Durchsuche letzte
Select block : Block auswählen
Select car : Fahrzeug auswählen
Select contact\: : Kotakt auswählen:
@@ -304,6 +308,7 @@ Trains\: : Züge:
TrainSelect : Zug-Auswahl
TrainSpeed : Zug-Geschwindigkeit
Train speed : Zug-Geschwindigkeit
+TrainWasInBlock : Zug war im Block
Trigger {} : {} betätigen
Trigger a feedback sensor to assign it with this contact! : Rückmeldekontakt auslösen, um ihn diesem Kontakt zuzuweisen!
TriggerContact : Kontakt auslösen
@@ -335,4 +340,5 @@ Was not able to set all signals! : Konnte nicht alle Signale stellen!
Was not able to set all turnouts! : Konnte nicht alle Weichen stellen!
WEST : Westen
Width : Breite
+{} within last {} blocks of train : {} ist in den letzten {} Blöcken des Zugs
Your plan currently has {} routes. : Ihr Plan hat im Moment {} Fahrstraßen.
\ No newline at end of file
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
index b6bca3b..eb24962 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
@@ -32,7 +32,7 @@ public class BlockFree extends Condition {
public Condition load(JSONObject json) {
super.load(json);
- block(Block.get(new Id(json.getString(BLOCK))));
+ if (json.has(BLOCK)) block(Block.get(new Id(json.getString(BLOCK))));
return this;
}
@@ -60,7 +60,7 @@ public class BlockFree extends Condition {
if (!params.containsKey(BLOCK)) return t("No block id passed to BlockFree.update()!");
Id bid = new Id(params.get(BLOCK));
Block block = Block.get(bid);
- if (block == null) return t("No block with id {} found!",bid);
+ if (isNull(block)) return t("No block with id {} found!",bid);
this.block = block;
return super.update(params);
}
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
index 4d79843..57eb3ed 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
@@ -125,7 +125,8 @@ public abstract class Condition extends BaseClass {
TrainHasTag.class,
TrainLength.class,
TrainSelect.class,
- TrainSpeed.class);
+ TrainSpeed.class,
+ TrainWasInBlock.class);
}
public Condition load(JSONObject json) {
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
new file mode 100644
index 0000000..a861ee7
--- /dev/null
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
@@ -0,0 +1,77 @@
+package de.srsoftware.web4rail.conditions;
+
+import java.util.HashMap;
+import java.util.List;
+
+import org.json.JSONObject;
+
+import de.srsoftware.tools.Tag;
+import de.srsoftware.web4rail.BaseClass;
+import de.srsoftware.web4rail.Window;
+import de.srsoftware.web4rail.moving.Train;
+import de.srsoftware.web4rail.tags.Fieldset;
+import de.srsoftware.web4rail.tags.Input;
+import de.srsoftware.web4rail.tiles.Block;
+
+public class TrainWasInBlock extends Condition {
+
+ private static final String BLOCK = Block.class.getSimpleName();
+ private static final String COUNT = "count";
+ private Block block;
+ private int count = 5;
+
+ private TrainWasInBlock block(Block block) {
+ this.block = block;
+ return this;
+ }
+
+ @Override
+ public boolean fulfilledBy(Context context) {
+ Train train = context.train();
+ if (isNull(train)) return false;
+ return train.lastBlocks(count).contains(block) != inverted;
+ }
+
+ @Override
+ public JSONObject json() {
+ return super.json().put(BLOCK, block.id()).put(COUNT, count);
+ }
+
+ public Condition load(JSONObject json) {
+ super.load(json);
+ if (json.has(BLOCK)) block(Block.get(new Id(json.getString(BLOCK))));
+ if (json.has(COUNT)) count = json.getInt(COUNT);
+ return this;
+ }
+
+ @Override
+ protected Window properties(List