diff --git a/pom.xml b/pom.xml
index dcd0e72..4ea3aed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 1.4.7
+ 1.4.8
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java
index 88d617c..c35e879 100644
--- a/src/main/java/de/srsoftware/web4rail/Plan.java
+++ b/src/main/java/de/srsoftware/web4rail/Plan.java
@@ -156,6 +156,7 @@ public class Plan extends BaseClass{
private static final String FINAL_SPEED = "final_speed";
private static final String FREE_BEHIND_TRAIN = "free_behind_train";
private static final String RENAME = "rename";
+ private static final String SPEED_STEP = "speed_step";
private String name = DEFAULT_NAME;
private ControlUnit controlUnit = new ControlUnit(this); // the control unit, to which the plan is connected
@@ -496,6 +497,7 @@ public class Plan extends BaseClass{
return new JSONObject()
.put(FINAL_SPEED, Train.defaultEndSpeed)
+ .put(SPEED_STEP, Train.defaultSpeedStep)
.put(FREE_BEHIND_TRAIN, Route.freeBehindTrain)
.put(LENGTH_UNIT, lengthUnit)
.put(SPEED_UNIT, speedUnit)
@@ -525,6 +527,7 @@ public class Plan extends BaseClass{
if (json.has(LENGTH_UNIT)) lengthUnit = json.getString(LENGTH_UNIT);
if (json.has(SPEED_UNIT)) speedUnit = json.getString(SPEED_UNIT);
if (json.has(FINAL_SPEED)) Train.defaultEndSpeed = json.getInt(FINAL_SPEED);
+ if (json.has(SPEED_STEP)) Train.defaultSpeedStep = json.getInt(SPEED_STEP);
if (json.has(FREE_BEHIND_TRAIN)) Route.freeBehindTrain = json.getBoolean(FREE_BEHIND_TRAIN);
try {
@@ -704,6 +707,7 @@ public class Plan extends BaseClass{
formInputs.add(null, new Input(ACTION,ACTION_UPDATE));
formInputs.add(t("Length unit"),new Input(LENGTH_UNIT, lengthUnit));
formInputs.add(t("Speed unit"),new Input(SPEED_UNIT, speedUnit));
+ formInputs.add(t("Speed step"),new Input(SPEED_STEP, Train.defaultSpeedStep).attr("title", t("Speeds are always increadsed/decreased by this value")));
formInputs.add(t("Lower speed limit"),new Input(FINAL_SPEED, Train.defaultEndSpeed).attr("title", t("Final speed after breaking, before halting")));
formInputs.add(t("Free tiles behind train"),new Checkbox(FREE_BEHIND_TRAIN, t("If checked, tiles behind the train are freed according to the length of the train and the tiles. If it is unchecked, tiles will not get free before route is finished."), Route.freeBehindTrain));
@@ -1017,6 +1021,7 @@ public class Plan extends BaseClass{
if (params.containsKey(LENGTH_UNIT)) lengthUnit = params.get(LENGTH_UNIT);
if (params.containsKey(SPEED_UNIT)) speedUnit = params.get(SPEED_UNIT);
+ if (params.containsKey(SPEED_STEP)) Train.defaultSpeedStep = Integer.parseInt(params.get(SPEED_STEP));
if (params.containsKey(FINAL_SPEED)) Train.defaultEndSpeed = Integer.parseInt(params.get(FINAL_SPEED));
Route.freeBehindTrain = "on".equalsIgnoreCase(params.get(FREE_BEHIND_TRAIN));
diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java
index 376ad3b..cb99f6c 100644
--- a/src/main/java/de/srsoftware/web4rail/Route.java
+++ b/src/main/java/de/srsoftware/web4rail/Route.java
@@ -253,7 +253,7 @@ public class Route extends BaseClass {
table.addRow(t,isSet(fTime)? fTime+NBSP+"ms" : "–",isSet(rTime)? fTime+NBSP+"ms" : "–");
}
table.clazz("brake-times").addTo(fieldset);
- new Tag("p").content(t("1) Duration between 5 {} steps during brake process.",speedUnit)).addTo(fieldset);
+ new Tag("p").content(t("1) Duration between {} {} steps during brake process.",Train.defaultSpeedStep,speedUnit)).addTo(fieldset);
return fieldset;
}
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
index f96e9fd..f4f6bc0 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
@@ -63,7 +63,7 @@ public class Locomotive extends Car implements Constants,Device{
new Locomotive(params.get(Locomotive.NAME)).parent(plan).register();
return Locomotive.manager();
case ACTION_FASTER10:
- return loco.faster(10);
+ return loco.faster(Train.defaultSpeedStep);
case ACTION_MOVE:
return loco.moveUp();
case ACTION_PROGRAM:
@@ -71,7 +71,7 @@ public class Locomotive extends Car implements Constants,Device{
case ACTION_PROPS:
return loco == null ? Locomotive.manager() : loco.properties();
case ACTION_SLOWER10:
- return loco.faster(-10);
+ return loco.faster(-Train.defaultSpeedStep);
case ACTION_STOP:
return loco.stop();
case ACTION_TOGGLE_F1:
@@ -134,10 +134,10 @@ public class Locomotive extends Car implements Constants,Device{
Tag par = new Tag("p");
params.put(ACTION, ACTION_FASTER10);
- new Button(t("Faster (10 {})",speedUnit),params).addTo(par);
+ new Button(t("Faster ({} {})",Train.defaultSpeedStep,speedUnit),params).addTo(par);
params.put(ACTION, ACTION_SLOWER10);
- new Button(t("Slower (10 {})",speedUnit),params).addTo(par);
+ new Button(t("Slower ({} {})",Train.defaultSpeedStep,speedUnit),params).addTo(par);
par.addTo(fieldset);
diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java
index c7e3191..7d1d7fe 100644
--- a/src/main/java/de/srsoftware/web4rail/moving/Train.java
+++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java
@@ -55,7 +55,8 @@ public class Train extends BaseClass implements Comparable {
private static final String NAME = "name";
- public static int defaultEndSpeed;
+ public static int defaultEndSpeed = 10;
+ public static int defaultSpeedStep = 10;
private String name = null;
@@ -132,7 +133,7 @@ public class Train extends BaseClass implements Comparable {
case ACTION_TOGGLE_F4:
return train.toggleFunction(4);
case ACTION_FASTER10:
- return train.faster(10);
+ return train.faster(Train.defaultSpeedStep);
case ACTION_MOVE:
return train.setDestination(params);
case ACTION_PROPS:
@@ -142,7 +143,7 @@ public class Train extends BaseClass implements Comparable {
case ACTION_REVERSE:
return train.reverse().properties();
case ACTION_SLOWER10:
- return train.slower(10);
+ return train.slower(Train.defaultSpeedStep);
case ACTION_START:
return train.properties(train.start(false));
case ACTION_STOP:
diff --git a/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java b/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
index 1c9429e..2e76b7e 100644
--- a/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
+++ b/src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java
@@ -12,8 +12,6 @@ public class BrakeProcess extends BaseClass implements Runnable{
private static final Logger LOG = LoggerFactory.getLogger(BrakeProcess.class);
- private static final int SPEED_STEP = 10;
-
public static int defaultTimeStep = 500;
private Train train;
private int targetSpeed = Train.defaultEndSpeed;
@@ -41,7 +39,7 @@ public class BrakeProcess extends BaseClass implements Runnable{
int s = startSpeed;
while (s > Train.defaultEndSpeed) {
dist += s*ts;
- s -= SPEED_STEP;
+ s -= Train.defaultSpeedStep;
}
LOG.debug("Estimated distamce with {} ms timestep: {}",ts,dist);
return dist;
@@ -64,7 +62,7 @@ public class BrakeProcess extends BaseClass implements Runnable{
sleep(timeStep);
lastSpeed = train.speed;
updateDistance();
- if (lastSpeed > targetSpeed) lastSpeed -= SPEED_STEP;
+ if (lastSpeed > targetSpeed) lastSpeed -= Train.defaultSpeedStep;
if (ended) break;
if (lastSpeed <= targetSpeed && (ended = true)) lastSpeed = targetSpeed;
train.setSpeed(lastSpeed);