* verbesserte Geschwindigkeitsregelung

* erweiterung der Aktion „Zug in Block bestimmen“
* verbesserungen beim Rangieren
This commit is contained in:
Stephan Richter
2021-05-15 00:34:38 +02:00
parent 311f6c8d06
commit 029222ffa2
11 changed files with 212 additions and 34 deletions

View File

@@ -9,6 +9,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
@@ -16,27 +17,28 @@ import de.srsoftware.web4rail.tiles.Tile;
public class DetermineTrainInBlock extends Action {
private static final String PARKED_TRAIN = "parked-train";
public DetermineTrainInBlock(BaseClass parent) {
super(parent);
}
private boolean parked = false;
private Block block = null;
@Override
public boolean fire(Context context,Object cause) {
if (isNull(block)) return false;
Train train = block.occupyingTrain();
if (isSet(train)) {
context.block(block);
context.train(block.occupyingTrain());
}
return true;
if (isNull(block)) return false;
Train train = parked ? (block.trains().isEmpty() ? null : block.trains().firstElement()) : block.occupyingTrain();
context.train(train);
return (isSet(train));
}
@Override
public JSONObject json() {
JSONObject json = super.json();
if (isSet(block)) json.put(BLOCK, block.id());
if (parked) json.put(PARKED_TRAIN, true);
return json;
}
@@ -51,12 +53,14 @@ public class DetermineTrainInBlock extends Action {
block = Block.get(blockId);
}
};
if (json.has(PARKED_TRAIN)) parked = json.getBoolean(PARKED_TRAIN);
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm,String...errors) {
formInputs.add(t("Block")+": "+(isNull(block) ? t("unset") : block),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,BLOCK)));
formInputs.add(t("parked train"),new Checkbox(PARKED_TRAIN, t("first parked train"), parked));
return super.properties(preForm, formInputs, postForm,errors);
}
@@ -79,6 +83,7 @@ public class DetermineTrainInBlock extends Action {
block = (Block) tile;
} else return t("Clicked tile is not a {}!",t("block"));
}
parked = ("on".equals(params.get(PARKED_TRAIN)));
return context().properties();
}
}