Die Condition "block free" meldete true, wenn der Context den Zug enthielt, der sich im getesteten Block aufhält.
Nun verhält es sich korrekt: bei einem belegten Block wird immer "false" zurückgeliefert, unabhängig vom Zug im Kontext
Clear destinations of train : Ziele des Zugs löschen
Clear trigger : Trigger löschen
Clicked tile is not a {}! : Angeklickte Kachel ist kein {}!
Click here to add conditions : Hier klicken, um Bedingungen hinzuzufügen
Click here to select block! : Hier klicken, um Block auszuwählen!
@ -92,10 +95,12 @@ Click here to select car! : Hier klicken, um Fahrzeug auszuwählen!
@@ -92,10 +95,12 @@ Click here to select car! : Hier klicken, um Fahrzeug auszuwählen!
Click here to select display! : Hier klicken, um Anzeige auszuwählen!
Click here to select switch! : Hier klicken, um Schalter auszuwählen!
Click here to select train! : Hier klicken, um Zug auszuwählen!
Click here to setup contact : Hier klicken, um Kontakt auszuwählen
Click here to setup assignment : Hier klicken, um Zuweisung zu bearbeiten!
Click here to setup contact/switch : Hier klicken, um Kontakt/Schalter auszuwählen
Click here to setup decoupler : Hier klicken, um Entkuppler einzurichten
click here to setup relay or switch : Hier klicken, um Relais oder Schalter einzurichten
click here to setup signal : Hier klicken, um Signal einzurichten
Click setup store lookup : Hier klicken, um Speichervergleich einzurichten
Click here to setup tag : Hier klicken, um Markierung anzugeben
click here to setup turnout : Hier klicken, um Weiche einzurichten
Click on a name to edit the entry. : Klicke auf einen Namen, um einen Eintrag zu bearbeiten.
@ -144,6 +149,7 @@ DetermineCarAtPosition : Fahrzeug im Zug bestimmen
@@ -144,6 +149,7 @@ DetermineCarAtPosition : Fahrzeug im Zug bestimmen
DetermineTrainInBlock : Zug im Block bestimmen
Determine, which car is at position {} of the current train : Bestimmen, welches Fahrzeug sich an Position {} des Zuges befindet
Determine, which train is in {} : Bestimmen, welcher Zug sich in {} befindet
Determine, which train is parked in {} : Bestimmen, welcher Zug in {} abgestellt ist
Trigger a feedback sensor to assign it with this contact! : Rückmeldekontakt auslösen, um ihn diesem Kontakt zuzuweisen!
TriggerContact : Kontakt auslösen
TriggerContact : Kontakt oder Schalter auslösen
Trigger contact to learn new contact : Kontakt auslösen, um neuen Kontakt zu lernen
Trigger Contact/Switch at destination : Kontakt/Schalter am Ziel auslösen
Triggers {} when reaching destination : Löst bei Erreichen des Ziels {} aus
Turn : Richtung wechseln
turn train : Richtung des Zuges Wechseln
Turn allowed : Wenden erlaubt
@ -485,15 +506,17 @@ Turns the train, as if it went through a loop. : Dreht den Zug, als wenn er eine
@@ -485,15 +506,17 @@ Turns the train, as if it went through a loop. : Dreht den Zug, als wenn er eine
Type : Typ
Unknown action\: {} : Unbekannte Aktion: {}
Unknown decoder type : Unbekannter Decoder-Typ
Updating {}\: {} → {} : Aktualisiere {}: {} → {}
Use negative number to count from end. : Nutze negative Nummern, um von Ende zu zählen.
formInputs.add(t("Select contact")+": "+(isNull(contact)?t("unset"):contact),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,CONTACT)));
formInputs.add(t("Select contact or switch")+": "+(isNull(contactOrSwitch)?t("unset"):contactOrSwitch),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,CONTACT)));
@ -25,7 +25,10 @@ public class BlockFree extends Condition {
@@ -25,7 +25,10 @@ public class BlockFree extends Condition {
@Override
publicbooleanfulfilledBy(Contextcontext){
returnblock.isFreeFor(context)!=inverted;
if(isNull(context))returnfalse;
if(isSet(context.train()))context=context.clone().train(null);// block.isFree would return true, if context.train == block.train. That has to be avoided!
if(!inverted)returnblock.isFreeFor(context);
return!block.isFreeFor(newContext(block));// block.isFreeFor würde true liefern, wenn der Zug im Kontext gleich dem Zug im Block wäre. Da wir aber nur wissen wollen, ob der Block belegt ist, brauchen wir einen Context ohne Zug.
}
@Override
@ -69,6 +72,7 @@ public class BlockFree extends Condition {
@@ -69,6 +72,7 @@ public class BlockFree extends Condition {
if(tileinstanceofBlock){
block=(Block)tile;
}elsereturnt("Clicked tile is not a {}!",t("block"));
LOG.debug("{} has no destination, returning {}",train,candidates);
@ -120,14 +121,14 @@ public class RoutePrepper extends BaseClass implements Runnable{
@@ -120,14 +121,14 @@ public class RoutePrepper extends BaseClass implements Runnable{
LOG.debug("{} is heading for {}, starting breadth-first search…",train,destination);
for(intdepth=1;depth<99;depth++){
for(intdepth=1;depth<33;depth++){
if(candidates.stream().filter(trail->trail.endsAt(destination)).count()>0)returncandidates;// return connectingTrails + other routes, in case all connecting trails are occupied