fixed bug:

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
This commit is contained in:
2021-11-12 02:06:35 +01:00
parent b6242d2c4e
commit f8ad1b42e0
2 changed files with 3 additions and 1 deletions

View File

@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId>
<version>1.5.27</version>
<version>1.5.28</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

View File

@@ -25,6 +25,8 @@ public class BlockFree extends Condition {
@Override
public boolean fulfilledBy(Context context) {
if (isNull(context)) return false;
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) return block.isFreeFor(context);
return !block.isFreeFor(new Context(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.
}