Browse Source

fixed #23

lookup-tables
Stephan Richter 5 years ago
parent
commit
d32f9562a8
  1. 2
      pom.xml
  2. 59
      src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
  3. 45
      src/main/java/de/srsoftware/web4rail/moving/Train.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.2.35</version>
<version>1.2.36</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

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

@ -142,8 +142,8 @@ public class Locomotive extends Car implements Constants,Device{ @@ -142,8 +142,8 @@ public class Locomotive extends Car implements Constants,Device{
}
direction.addTo(fieldset);
Tag functions = new Tag("p");
Map.of("F1",ACTION_TOGGLE_F1,"F2",ACTION_TOGGLE_F2,"F3",ACTION_TOGGLE_F3,"F4",ACTION_TOGGLE_F4).entrySet().forEach(e -> {
Tag functions = new Tag("p");
Map.of("F1",ACTION_TOGGLE_F1,"F2",ACTION_TOGGLE_F2,"F3",ACTION_TOGGLE_F3,"F4",ACTION_TOGGLE_F4).entrySet().stream().sorted((e1,e2)->(e1.getKey().compareTo(e2.getKey()))).forEach(e -> {
params.put(ACTION, e.getValue());
new Button(t(e.getKey()),params).addTo(functions);
});
@ -262,6 +262,7 @@ public class Locomotive extends Car implements Constants,Device{ @@ -262,6 +262,7 @@ public class Locomotive extends Car implements Constants,Device{
private void queue() {
int step = proto.steps * speed / (maxSpeedForward == 0 ? 100 : maxSpeedForward);
init();
plan.queue(new Command("SET {} GL "+address+" "+(orientation == FORWARD ? 0 : 1)+" "+step+" "+proto.steps+" "+(f1?1:0)+" "+(f2?1:0)+" "+(f3?1:0)+" "+(f4?1:0)) {
@Override
@ -271,6 +272,27 @@ public class Locomotive extends Car implements Constants,Device{ @@ -271,6 +272,27 @@ public class Locomotive extends Car implements Constants,Device{
}
});
}
public String setFunction(int num, boolean active) {
switch (num) {
case 1:
f1 = active;
break;
case 2:
f2 = active;
break;
case 3:
f3 = active;
break;
case 4:
f4 = active;
break;
default:
return t("Unknown function: {}",num);
}
queue();
return t("{} F{}",t(active?"Activated":"Deavtivated"),num);
}
/**
* Sets the speed of the locomotive to the given velocity in [plan.speedUnit]s
@ -279,7 +301,6 @@ public class Locomotive extends Car implements Constants,Device{ @@ -279,7 +301,6 @@ public class Locomotive extends Car implements Constants,Device{
*/
public String setSpeed(int newSpeed) {
LOG.debug(this.detail()+".setSpeed({})",newSpeed);
init();
speed = newSpeed;
if (speed > maxSpeedForward && maxSpeedForward > 0) speed = maxSpeed();
if (speed < 0) speed = 0;
@ -293,30 +314,18 @@ public class Locomotive extends Car implements Constants,Device{ @@ -293,30 +314,18 @@ public class Locomotive extends Car implements Constants,Device{
return properties();
}
private Object toggleFunction(int f) {
boolean active;
Object toggleFunction(int f) {
switch (f) {
case 1:
f1 =! f1;
active = f1;
break;
return setFunction(1, !f1);
case 2:
f2 =! f2;
active = f2;
break;
return setFunction(2, !f2);
case 3:
f3 =! f3;
active = f3;
break;
return setFunction(3, !f3);
case 4:
f4 =! f4;
active = f4;
break;
default:
return t("Unknown function: {}",f);
return setFunction(4, !f4);
}
queue();
return t("{} F{}",t(active?"Activated":"Deavtivated"),f);
return t("Unknown function: {}",f);
}
public String turn() {
@ -329,7 +338,13 @@ public class Locomotive extends Car implements Constants,Device{ @@ -329,7 +338,13 @@ public class Locomotive extends Car implements Constants,Device{
protected Window update(HashMap<String, String> params) {
super.update(params);
if (params.containsKey(PROTOCOL)) proto = Protocol.valueOf(params.get(PROTOCOL));
if (params.containsKey(ADDRESS)) address = Integer.parseInt(params.get(ADDRESS));
if (params.containsKey(ADDRESS)) {
int newAddress = Integer.parseInt(params.get(ADDRESS));
if (newAddress != address) {
init = false;
address = newAddress;
}
}
return properties();
}
}

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

@ -74,6 +74,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -74,6 +74,7 @@ public class Train extends BaseClass implements Comparable<Train> {
private static final String DESTINATION = "destination";
private HashSet<String> tags = new HashSet<String>();
private boolean f1,f2,f3,f4;
private Block currentBlock,destination = null;
LinkedList<Tile> trace = new LinkedList<Tile>();
@ -141,6 +142,14 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -141,6 +142,14 @@ public class Train extends BaseClass implements Comparable<Train> {
return train.automatic();
case ACTION_DROP:
return train.dropCar(params);
case ACTION_TOGGLE_F1:
return train.toggleFunction(1);
case ACTION_TOGGLE_F2:
return train.toggleFunction(2);
case ACTION_TOGGLE_F3:
return train.toggleFunction(3);
case ACTION_TOGGLE_F4:
return train.toggleFunction(4);
case ACTION_FASTER10:
return train.faster(10);
case ACTION_MOVE:
@ -163,6 +172,37 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -163,6 +172,37 @@ public class Train extends BaseClass implements Comparable<Train> {
return t("Unknown action: {}",params.get(ACTION));
}
Object toggleFunction(int f) {
boolean active;
switch (f) {
case 1:
f1 =! f1;
active = f1;
break;
case 2:
f2 =! f2;
active = f2;
break;
case 3:
f3 =! f3;
active = f3;
break;
case 4:
f4 =! f4;
active = f4;
break;
default:
return t("Unknown function: {}",f);
}
for (Car car : cars) {
if (car instanceof Locomotive) {
Locomotive loco = (Locomotive) car;
loco.setFunction(f,active);
}
}
return properties();
}
public void addToTrace(Vector<Tile> newTiles) {
boolean active = trace.isEmpty();
for (Tile tile : newTiles) {
@ -222,7 +262,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -222,7 +262,7 @@ public class Train extends BaseClass implements Comparable<Train> {
car.link(car.name()+(car.stockId.isEmpty() ? "" : " ("+car.stockId+")")).addTo(li).content(NBSP);
car.button(t("turn within train"),Map.of(ACTION,ACTION_TURN)).addTo(li);
car.button("↑",Map.of(ACTION,ACTION_MOVE)).addTo(li);
button(t("delete"),Map.of(ACTION,ACTION_DROP,LOCO_ID,car.id().toString())).addTo(li);
button(t("delete"),Map.of(ACTION,ACTION_DROP,CAR_ID,car.id().toString())).addTo(li);
li.addTo(carList);
}
@ -234,7 +274,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -234,7 +274,7 @@ public class Train extends BaseClass implements Comparable<Train> {
new Input(ACTION, ACTION_ADD).hideIn(addLocoForm);
new Input(ID,id).hideIn(addLocoForm);
Select select = new Select(CAR_ID);
for (Car loco : locos) select.addOption(loco.id(), loco);
for (Car loco : locos) select.addOption(loco.id(), loco+(loco.stockId.isEmpty()?"":" ("+loco.stockId+")"));
select.addTo(addLocoForm);
new Button(t("add"),addLocoForm).addTo(addLocoForm);
addLocoForm.addTo(new Tag("li")).addTo(carList);
@ -797,7 +837,6 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -797,7 +837,6 @@ public class Train extends BaseClass implements Comparable<Train> {
if (!tag.isEmpty()) tags.add(tag);
}
}
return this;
}

Loading…
Cancel
Save