added TurnTrain action

This commit is contained in:
Stephan Richter
2020-10-29 00:38:58 +01:00
parent d40426e24c
commit 4263617de3
5 changed files with 40 additions and 11 deletions

View File

@@ -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>

View File

@@ -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) {

View File

@@ -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;
}

View 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();
}
}

View File

@@ -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);
}