Browse Source

extended TurnTrain action into AlterDirection action

lookup-tables
Stephan Richter 5 years ago
parent
commit
323a48dcd6
  1. 2
      pom.xml
  2. 4
      src/main/java/de/srsoftware/web4rail/actions/Action.java
  3. 110
      src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
  4. 19
      src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java
  5. 2
      src/main/java/de/srsoftware/web4rail/moving/Train.java

2
pom.xml

@ -4,7 +4,7 @@ @@ -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>

4
src/main/java/de/srsoftware/web4rail/actions/Action.java

@ -42,6 +42,7 @@ public abstract class Action extends BaseClass { @@ -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 { @@ -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

@ -0,0 +1,110 @@ @@ -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);
}
}

19
src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java

@ -1,19 +0,0 @@ @@ -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;
}
}

2
src/main/java/de/srsoftware/web4rail/moving/Train.java

@ -673,7 +673,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -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)) {

Loading…
Cancel
Save