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> <modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId> <groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId> <artifactId>web4rail</artifactId>
<version>0.7.2</version> <version>0.7.3</version>
<name>Web4Rail</name> <name>Web4Rail</name>
<packaging>jar</packaging> <packaging>jar</packaging>
<description>Java Model Railway Control</description> <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.FinishRoute;
import de.srsoftware.web4rail.actions.SetSignalsToStop; import de.srsoftware.web4rail.actions.SetSignalsToStop;
import de.srsoftware.web4rail.actions.SpeedReduction; import de.srsoftware.web4rail.actions.SpeedReduction;
import de.srsoftware.web4rail.actions.TurnTrain;
import de.srsoftware.web4rail.moving.Train; import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Button; import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Form; 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(ACTION,ACTION_ADD_ACTION).hideIn(typeForm);
new Input(CONTACT,contact.id()).hideIn(typeForm); new Input(CONTACT,contact.id()).hideIn(typeForm);
Select select = new Select(TYPE); 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()); for (Class<? extends Action> clazz : classes) select.addOption(clazz.getSimpleName());
select.addTo(new Label("Action type:")).addTo(typeForm); select.addTo(new Label("Action type:")).addTo(typeForm);
return new Button(t("Create action"),"return submitForm('"+formId+"');").addTo(typeForm); return new Button(t("Create action"),"return submitForm('"+formId+"');").addTo(typeForm);
@@ -130,17 +135,20 @@ public class Route implements Constants{
switch (type) { switch (type) {
case "FinishRoute": case "FinishRoute":
addAction(contact.trigger(),new FinishRoute(id())); addAction(contact.trigger(),new FinishRoute(id()));
plan.stream("Action added!"); break;
return properties();
case "SpeedReduction": case "SpeedReduction":
return SpeedReduction.propForm(params,this,contact); return SpeedReduction.propForm(params,this,contact);
case "SetSignalsToStop": case "SetSignalsToStop":
addAction(contact.trigger(),new SetSignalsToStop(id())); addAction(contact.trigger(),new SetSignalsToStop(id()));
plan.stream("Action added!"); break;
return properties(); case "TurnTrain":
addAction(contact.trigger(),new TurnTrain(id()));
break;
default:
return win;
} }
plan.stream("Action added!");
return win; return properties();
} }
private void addBasicPropertiesTo(Window win) { private void addBasicPropertiesTo(Window win) {

View File

@@ -38,6 +38,8 @@ public abstract class Action {
return new SetSignalsToStop(json.getInt(RouteAction.ROUTE)); return new SetSignalsToStop(json.getInt(RouteAction.ROUTE));
case "SpeedReduction": case "SpeedReduction":
return new SpeedReduction(json.getInt(RouteAction.ROUTE), json.getInt(SpeedReduction.MAX_SPEED)); return new SpeedReduction(json.getInt(RouteAction.ROUTE), json.getInt(SpeedReduction.MAX_SPEED));
case "TurnTrain":
return new TurnTrain(json.getInt(RouteAction.ROUTE));
} }
return null; 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.Constants;
import de.srsoftware.web4rail.Plan; import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Plan.Direction; import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.actions.SetSignalsToStop;
import de.srsoftware.web4rail.Route; import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Button; import de.srsoftware.web4rail.tags.Button;
@@ -430,13 +429,15 @@ public class Train implements Constants {
return name != null ? name : locos.firstElement().name(); return name != null ? name : locos.firstElement().name();
} }
private Object turn() throws IOException { public Object turn() {
LOG.debug("train.turn()"); LOG.debug("train.turn()");
if (direction != null) { if (direction != null) {
direction = direction.inverse(); direction = direction.inverse();
for (Locomotive loco : locos) loco.turn(); 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); return t("{} turned.",this);
} }