extended TurnTrain action into AlterDirection action
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.srsoftware</groupId>
|
||||
<artifactId>web4rail</artifactId>
|
||||
<version>1.3.13</version>
|
||||
<version>1.3.14</version>
|
||||
<name>Web4Rail</name>
|
||||
<packaging>jar</packaging>
|
||||
<description>Java Model Railway Control</description>
|
||||
|
||||
@@ -42,6 +42,7 @@ public abstract class Action extends BaseClass {
|
||||
public static List<Class<? extends Action>> classes() {
|
||||
return List.of(
|
||||
AddRemoveTag.class,
|
||||
AlterDirection.class,
|
||||
BrakeCancel.class,
|
||||
BrakeStart.class,
|
||||
ConditionalAction.class,
|
||||
@@ -64,8 +65,7 @@ public abstract class Action extends BaseClass {
|
||||
StartStopAuto.class,
|
||||
StopTrain.class,
|
||||
SwitchFunction.class,
|
||||
TriggerContact.class,
|
||||
TurnTrain.class
|
||||
TriggerContact.class
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
110
src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
Normal file
110
src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
Normal file
@@ -0,0 +1,110 @@
|
||||
package de.srsoftware.web4rail.actions;
|
||||
|
||||
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.Plan.Direction;
|
||||
import de.srsoftware.web4rail.Window;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Radio;
|
||||
|
||||
public class AlterDirection extends Action{
|
||||
|
||||
enum NEWDIR {
|
||||
EAST, WEST, NORTH, SOUTH, REVERSE, TURN
|
||||
}
|
||||
|
||||
private static final String NEW_DIRECTION = "new_dir";
|
||||
private NEWDIR newDir = NEWDIR.REVERSE;
|
||||
|
||||
public AlterDirection(BaseClass parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@SuppressWarnings("incomplete-switch")
|
||||
@Override
|
||||
public boolean fire(Context context) {
|
||||
Train train = context.train();
|
||||
if (isNull(train)) return false;
|
||||
|
||||
if (isNull(train.direction())) {
|
||||
switch (newDir) {
|
||||
case EAST:
|
||||
train.heading(Direction.EAST);
|
||||
return true;
|
||||
case WEST:
|
||||
train.heading(Direction.WEST);
|
||||
return true;
|
||||
case NORTH:
|
||||
train.heading(Direction.NORTH);
|
||||
return true;
|
||||
case SOUTH:
|
||||
train.heading(Direction.SOUTH);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
switch (newDir) {
|
||||
case REVERSE:
|
||||
train.reverse();
|
||||
return true;
|
||||
case TURN:
|
||||
train.turn();
|
||||
return true;
|
||||
}
|
||||
|
||||
if (newDir == NEWDIR.valueOf(train.direction().inverse().toString())) train.turn();
|
||||
return (newDir == NEWDIR.valueOf(train.direction().toString())); // train already has correct direction
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject json() {
|
||||
JSONObject json = super.json();
|
||||
json.put(NEW_DIRECTION, newDir);
|
||||
return json;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
if (json.has(NEW_DIRECTION)) newDir = NEWDIR.valueOf(json.getString(NEW_DIRECTION));
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
|
||||
Tag radios = new Tag("div");
|
||||
for (NEWDIR d : NEWDIR.values()) {
|
||||
new Radio(NEW_DIRECTION, d, t("{}",d), newDir == d).addTo(radios);
|
||||
}
|
||||
|
||||
formInputs.add(t("new direction"),radios);
|
||||
return super.properties(preForm, formInputs, postForm);
|
||||
}
|
||||
|
||||
@SuppressWarnings("incomplete-switch")
|
||||
@Override
|
||||
public String toString() {
|
||||
switch (newDir) {
|
||||
case REVERSE:
|
||||
return t("reverse train");
|
||||
case TURN:
|
||||
return t("turn train");
|
||||
default:
|
||||
return t("Set direction of train to {}",newDir);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Object update(HashMap<String, String> params) {
|
||||
if (params.containsKey(NEW_DIRECTION)) {
|
||||
newDir = NEWDIR.valueOf(params.get(NEW_DIRECTION));
|
||||
}
|
||||
return super.update(params);
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
package de.srsoftware.web4rail.actions;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
|
||||
public class TurnTrain extends Action{
|
||||
|
||||
public TurnTrain(BaseClass parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean fire(Context context) {
|
||||
if (context.train() != null) {
|
||||
context.train().turn();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -673,7 +673,7 @@ public class Train extends BaseClass implements Comparable<Train> {
|
||||
* before: CabCar→ MiddleCar→ Loco→
|
||||
* after: ←Loco ←MiddleCar ←CabCar
|
||||
*/
|
||||
private Tag reverse() {
|
||||
public Tag reverse() {
|
||||
LOG.debug("train.reverse();");
|
||||
|
||||
if (isSet(direction)) {
|
||||
|
||||
Reference in New Issue
Block a user