added TurnTrain 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>0.7.2</version>
|
||||
<version>0.7.3</version>
|
||||
<name>Web4Rail</name>
|
||||
<packaging>jar</packaging>
|
||||
<description>Java Model Railway Control</description>
|
||||
|
||||
@@ -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{
|
||||
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{
|
||||
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) {
|
||||
|
||||
@@ -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
Normal file
18
src/main/java/de/srsoftware/web4rail/actions/TurnTrain.java
Normal file
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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 {
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user