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