Browse Source

implemented new function, that switches decoder functions

lookup-tables
Stephan Richter 5 years ago
parent
commit
68f08f012f
  1. 2
      pom.xml
  2. 7
      resources/translations/Application.de.translation
  3. 1
      src/main/java/de/srsoftware/web4rail/actions/Action.java
  4. 111
      src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
  5. 73
      src/main/java/de/srsoftware/web4rail/moving/Train.java

2
pom.xml

@ -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>1.2.36</version> <version>1.2.37</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>

7
resources/translations/Application.de.translation

@ -79,6 +79,7 @@ Determine, which train is in {} : Bestimmen, welcher Zug sich in {} befindet
Direction : Richtung Direction : Richtung
Direction\: heading {} : Richtung: nach {} Direction\: heading {} : Richtung: nach {}
disabled : deaktiviert disabled : deaktiviert
disable {} : {} deaktivieren
Display "{}" on {}. : „{}“ auf {} anzeigen. Display "{}" on {}. : „{}“ auf {} anzeigen.
Drop : Verwerfen Drop : Verwerfen
Dropped destination of {}. : Ziel von {} verworfen. Dropped destination of {}. : Ziel von {} verworfen.
@ -86,7 +87,10 @@ Dropped destination of {}. : Ziel von {} verworfen.
EAST : Osten EAST : Osten
Editable properties : veränderliche Eigenschaften Editable properties : veränderliche Eigenschaften
editable train properties : veränderliche Zug-Eigenschaften editable train properties : veränderliche Zug-Eigenschaften
Edit json : JSON bearbeiten
Effect : Effekt
Emergency : Notfall Emergency : Notfall
enable {} : {} aktivieren
export : exportieren export : exportieren
Faster (10 {}) : 10 {} schneller Faster (10 {}) : 10 {} schneller
Firing {} : starte {} Firing {} : starte {}
@ -95,6 +99,7 @@ forward : vorwärts
Found {} routes. : {} Routen gefunden. Found {} routes. : {} Routen gefunden.
FreeStartBlock : Start-Block freigeben FreeStartBlock : Start-Block freigeben
Fullscreen : Vollbild Fullscreen : Vollbild
Function : Funktion
Hardware settings : Hardware-Einstellungen Hardware settings : Hardware-Einstellungen
Height : Höhe Height : Höhe
Help : Hilfe Help : Hilfe
@ -210,6 +215,7 @@ Stop autopilot : Autopilot abschalten
Stopsettings : Halte-Einstellungen Stopsettings : Halte-Einstellungen
Straight port\: : Port für gerade Straight port\: : Port für gerade
STRAIGHT : gerade STRAIGHT : gerade
SwitchFunction : Funktion schalten
Switch power off : Strom ausschalten Switch power off : Strom ausschalten
Switch power on : Strom anschalten Switch power on : Strom anschalten
SYSTEM : Betriebssystem SYSTEM : Betriebssystem
@ -219,6 +225,7 @@ Text to show on display\: : Text, welcher in der Anzeige dargestellt werden soll
Tile(s) : Kachel(n) Tile(s) : Kachel(n)
Tile(s) moved. : Kachel(n) verschoben. Tile(s) moved. : Kachel(n) verschoben.
Toggle : umschalten Toggle : umschalten
toggle {} : {} umschalten
Toggle power : Stom umschalten Toggle power : Stom umschalten
Train : Zug Train : Zug
Train\: : Zug: Train\: : Zug:

1
src/main/java/de/srsoftware/web4rail/actions/Action.java

@ -62,6 +62,7 @@ public abstract class Action extends BaseClass {
ShowText.class, ShowText.class,
StopAllTrains.class, StopAllTrains.class,
StartStopAuto.class, StartStopAuto.class,
SwitchFunction.class,
TriggerContact.class, TriggerContact.class,
TurnTrain.class TurnTrain.class
); );

111
src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java

@ -0,0 +1,111 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Select;
public class SwitchFunction extends Action {
private static final String FUNCTION = "function";
private static final String EFFECT = "effect";
private static final int TOGGLE = -1;
private static final int ON = 1;
private static final int OFF = 0;
private int function = 1,effect=-1;
public SwitchFunction(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
if (isNull(context) || isNull(context.train())) return false;
switch (effect) {
case TOGGLE:
context.train().toggleFunction(function);
return true;
case ON:
context.train().setFunction(function, true);
return true;
case OFF:
context.train().setFunction(function, false);
return true;
}
return false;
}
@Override
public JSONObject json() {
JSONObject json = super.json();
json.put(EFFECT, effect);
json.put(FUNCTION, function);
return json;
}
@Override
public Action load(JSONObject json) {
super.load(json);
if (json.has(EFFECT)) effect = json.getInt(EFFECT);
if (json.has(FUNCTION)) function = json.getInt(FUNCTION);
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
Select selector = new Select(FUNCTION);
for (int i=1; i<5;i++) {
Tag option = selector.addOption(i,t("F"+i));
if (function == i) option.attr("selected", "selected");
}
formInputs.add(t("Function"), selector);
Tag radioGroup = new Tag("span");
new Radio(EFFECT, TOGGLE, t("Toggle"), effect == TOGGLE).addTo(radioGroup);
new Radio(EFFECT, ON, t("On"), effect == ON).addTo(radioGroup);
new Radio(EFFECT, OFF, t("Off"), effect == OFF).addTo(radioGroup);
formInputs.add(t("Effect"),radioGroup);
return super.properties(preForm, formInputs, postForm);
}
@Override
public String toString() {
switch (effect) {
case TOGGLE:
return t("toggle {}","F"+function);
case ON:
return t("enable {}","F"+function);
case OFF:
return t("disable {}","F"+function);
}
return null;
}
@Override
protected Object update(HashMap<String, String> params) {
String fn = params.get(FUNCTION);
if (isSet(fn)) {
function = Integer.parseInt(fn);
if (function < 1 || function > 4) function = 1;
}
String effect = params.get(EFFECT);
if (isSet(effect)) switch (effect) {
case "1":
case "0":
case "-1":
this.effect = Integer.parseInt(effect);
}
return super.update(params);
}
}

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

@ -172,37 +172,6 @@ public class Train extends BaseClass implements Comparable<Train> {
return t("Unknown action: {}",params.get(ACTION)); 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) { public void addToTrace(Vector<Tile> newTiles) {
boolean active = trace.isEmpty(); boolean active = trace.isEmpty();
for (Tile tile : newTiles) { for (Tile tile : newTiles) {
@ -675,6 +644,32 @@ public class Train extends BaseClass implements Comparable<Train> {
return t("{} is not a block!",tile); return t("{} is not a block!",tile);
} }
public Object 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);
}
for (Car car : cars) {
if (car instanceof Locomotive) {
Locomotive loco = (Locomotive) car;
loco.setFunction(num,active);
}
}
return properties();
}
public void setSpeed(int newSpeed) { public void setSpeed(int newSpeed) {
speed = Math.min(newSpeed,maxSpeed()); speed = Math.min(newSpeed,maxSpeed());
if (speed < 0) speed = 0; if (speed < 0) speed = 0;
@ -802,11 +797,25 @@ public class Train extends BaseClass implements Comparable<Train> {
public SortedSet<String> tags() { public SortedSet<String> tags() {
TreeSet<String> list = new TreeSet<String>(tags); TreeSet<String> list = new TreeSet<String>(tags);
//for (Locomotive loco : locos) list.addAll(loco.tags());
for (Car car:cars) list.addAll(car.tags()); for (Car car:cars) list.addAll(car.tags());
return list; return list;
} }
public Object toggleFunction(int f) {
switch (f) {
case 1:
return setFunction(1, !f1);
case 2:
return setFunction(2, !f2);
case 3:
return setFunction(3, !f3);
case 4:
return setFunction(4, !f4);
}
return t("Unknown function: {}",f);
}
@Override @Override
public String toString() { public String toString() {
return name(); return name();

Loading…
Cancel
Save