Browse Source

implemented editable speed step

lookup-tables
Stephan Richter 4 years ago
parent
commit
0c644af2bf
  1. 2
      pom.xml
  2. 5
      src/main/java/de/srsoftware/web4rail/Plan.java
  3. 2
      src/main/java/de/srsoftware/web4rail/Route.java
  4. 8
      src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
  5. 7
      src/main/java/de/srsoftware/web4rail/moving/Train.java
  6. 6
      src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java

2
pom.xml

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId>
<version>1.4.7</version>
<version>1.4.8</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

5
src/main/java/de/srsoftware/web4rail/Plan.java

@ -156,6 +156,7 @@ public class Plan extends BaseClass{ @@ -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{ @@ -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{ @@ -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{ @@ -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{ @@ -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));

2
src/main/java/de/srsoftware/web4rail/Route.java

@ -253,7 +253,7 @@ public class Route extends BaseClass { @@ -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;
}

8
src/main/java/de/srsoftware/web4rail/moving/Locomotive.java

@ -63,7 +63,7 @@ public class Locomotive extends Car implements Constants,Device{ @@ -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{ @@ -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{ @@ -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);

7
src/main/java/de/srsoftware/web4rail/moving/Train.java

@ -55,7 +55,8 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -55,7 +55,8 @@ public class Train extends BaseClass implements Comparable<Train> {
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<Train> { @@ -132,7 +133,7 @@ public class Train extends BaseClass implements Comparable<Train> {
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<Train> { @@ -142,7 +143,7 @@ public class Train extends BaseClass implements Comparable<Train> {
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:

6
src/main/java/de/srsoftware/web4rail/threads/BrakeProcess.java

@ -12,8 +12,6 @@ public class BrakeProcess extends BaseClass implements Runnable{ @@ -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{ @@ -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{ @@ -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);

Loading…
Cancel
Save