Browse Source

added TurnTrain action

lookup-tables
Stephan Richter 5 years ago
parent
commit
4263617de3
  1. 2
      pom.xml
  2. 22
      src/main/java/de/srsoftware/web4rail/Route.java
  3. 2
      src/main/java/de/srsoftware/web4rail/actions/Action.java
  4. 18
      src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java
  5. 7
      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>0.7.2</version>
<version>0.7.3</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

22
src/main/java/de/srsoftware/web4rail/Route.java

@ -28,6 +28,7 @@ import de.srsoftware.web4rail.actions.ActivateRoute; @@ -28,6 +28,7 @@ import de.srsoftware.web4rail.actions.ActivateRoute;
import de.srsoftware.web4rail.actions.FinishRoute;
import de.srsoftware.web4rail.actions.SetSignalsToStop;
import de.srsoftware.web4rail.actions.SpeedReduction;
import de.srsoftware.web4rail.actions.TurnTrain;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Form;
@ -76,7 +77,11 @@ public class Route implements Constants{ @@ -76,7 +77,11 @@ public class Route implements Constants{
new Input(ACTION,ACTION_ADD_ACTION).hideIn(typeForm);
new Input(CONTACT,contact.id()).hideIn(typeForm);
Select select = new Select(TYPE);
List<Class<? extends Action>> classes = List.of(SpeedReduction.class,SetSignalsToStop.class,FinishRoute.class);
List<Class<? extends Action>> classes = List.of(
SpeedReduction.class,
SetSignalsToStop.class,
FinishRoute.class,
TurnTrain.class);
for (Class<? extends Action> clazz : classes) select.addOption(clazz.getSimpleName());
select.addTo(new Label("Action type:")).addTo(typeForm);
return new Button(t("Create action"),"return submitForm('"+formId+"');").addTo(typeForm);
@ -130,17 +135,20 @@ public class Route implements Constants{ @@ -130,17 +135,20 @@ public class Route implements Constants{
switch (type) {
case "FinishRoute":
addAction(contact.trigger(),new FinishRoute(id()));
plan.stream("Action added!");
return properties();
break;
case "SpeedReduction":
return SpeedReduction.propForm(params,this,contact);
case "SetSignalsToStop":
addAction(contact.trigger(),new SetSignalsToStop(id()));
plan.stream("Action added!");
return properties();
break;
case "TurnTrain":
addAction(contact.trigger(),new TurnTrain(id()));
break;
default:
return win;
}
return win;
plan.stream("Action added!");
return properties();
}
private void addBasicPropertiesTo(Window win) {

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

@ -38,6 +38,8 @@ public abstract class Action { @@ -38,6 +38,8 @@ public abstract class Action {
return new SetSignalsToStop(json.getInt(RouteAction.ROUTE));
case "SpeedReduction":
return new SpeedReduction(json.getInt(RouteAction.ROUTE), json.getInt(SpeedReduction.MAX_SPEED));
case "TurnTrain":
return new TurnTrain(json.getInt(RouteAction.ROUTE));
}
return null;
}

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

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
package de.srsoftware.web4rail.actions;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.moving.Train;
public class TurnTrain extends RouteAction implements Constants{
public TurnTrain(int routeId) {
super(routeId);
}
@Override
public void fire(Route route) {
Train train = route.train;
if (train != null) train.turn();
}
}

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

@ -23,7 +23,6 @@ import de.srsoftware.web4rail.Application; @@ -23,7 +23,6 @@ import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.actions.SetSignalsToStop;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button;
@ -430,13 +429,15 @@ public class Train implements Constants { @@ -430,13 +429,15 @@ public class Train implements Constants {
return name != null ? name : locos.firstElement().name();
}
private Object turn() throws IOException {
public Object turn() {
LOG.debug("train.turn()");
if (direction != null) {
direction = direction.inverse();
for (Locomotive loco : locos) loco.turn();
}
if (block != null) plan.place(block.train(this));
if (block != null) try {
plan.place(block.train(this));
} catch (IOException e) {}
return t("{} turned.",this);
}

Loading…
Cancel
Save