|
|
@ -119,22 +119,30 @@ public class Plan { |
|
|
|
public static final String REALM_TILE = "tile"; |
|
|
|
public static final String REALM_TILE = "tile"; |
|
|
|
public static final String REALM_CAR = "car"; |
|
|
|
public static final String REALM_CAR = "car"; |
|
|
|
private static final String ACTION_CONNECT = "connect"; |
|
|
|
private static final String ACTION_CONNECT = "connect"; |
|
|
|
|
|
|
|
private static final String ACTION_POWER = "power"; |
|
|
|
|
|
|
|
private static final String ACTION_EMERGENCY = "emergency"; |
|
|
|
|
|
|
|
public static final String ACTION_FASTER10 = "faster10"; |
|
|
|
|
|
|
|
public static final String ACTION_SLOWER10 = "slower10"; |
|
|
|
|
|
|
|
public static final String ACTION_STOP = "stop"; |
|
|
|
|
|
|
|
public static final String ACTION_TURN = "turn"; |
|
|
|
|
|
|
|
|
|
|
|
public HashMap<String,Tile> tiles = new HashMap<String,Tile>(); |
|
|
|
public HashMap<String,Tile> tiles = new HashMap<String,Tile>(); |
|
|
|
private HashSet<Block> blocks = new HashSet<Block>(); |
|
|
|
private HashSet<Block> blocks = new HashSet<Block>(); |
|
|
|
private HashMap<Integer, Route> routes = new HashMap<Integer, Route>(); |
|
|
|
private HashMap<Integer, Route> routes = new HashMap<Integer, Route>(); |
|
|
|
private ControlUnit controlUnit = new ControlUnit(); |
|
|
|
private ControlUnit controlUnit = new ControlUnit(); |
|
|
|
|
|
|
|
private boolean power = false; |
|
|
|
|
|
|
|
|
|
|
|
public Plan() { |
|
|
|
public Plan() { |
|
|
|
new Heartbeat().start(); |
|
|
|
new Heartbeat().start(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Tag actionMenu() throws IOException { |
|
|
|
private Tag actionMenu() throws IOException { |
|
|
|
Tag tileMenu = new Tag("div").clazz("actions").content(t("Actions")); |
|
|
|
Tag actionMenu = new Tag("div").clazz("actions").content(t("Actions")); |
|
|
|
Tag tiles = new Tag("div").clazz("list").content(""); |
|
|
|
Tag actions = new Tag("div").clazz("list").content(""); |
|
|
|
new Div("save").content(t("Save plan")).addTo(tiles); |
|
|
|
new Div("power").content(t("Toggle power")).addTo(actions); |
|
|
|
new Div("analyze").content(t("Analyze plan")).addTo(tiles); |
|
|
|
new Div("save").content(t("Save plan")).addTo(actions); |
|
|
|
return tiles.addTo(tileMenu); |
|
|
|
new Div("analyze").content(t("Analyze plan")).addTo(actions); |
|
|
|
|
|
|
|
return actions.addTo(actionMenu); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void addClient(OutputStreamWriter client) { |
|
|
|
public void addClient(OutputStreamWriter client) { |
|
|
@ -312,10 +320,19 @@ public class Plan { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Object locoAction(HashMap<String, String> params) throws IOException { |
|
|
|
private Object locoAction(HashMap<String, String> params) throws IOException { |
|
|
|
|
|
|
|
|
|
|
|
switch (params.get(ACTION)) { |
|
|
|
switch (params.get(ACTION)) { |
|
|
|
case ACTION_ADD_LOCO: |
|
|
|
case ACTION_ADD_LOCO: |
|
|
|
new Locomotive(params.get(Locomotive.NAME)); |
|
|
|
new Locomotive(params.get(Locomotive.NAME)); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
case ACTION_FASTER10: |
|
|
|
|
|
|
|
return Locomotive.get(params.get(ID)).faster(10); |
|
|
|
|
|
|
|
case ACTION_SLOWER10: |
|
|
|
|
|
|
|
return Locomotive.get(params.get(ID)).faster(-10); |
|
|
|
|
|
|
|
case ACTION_STOP: |
|
|
|
|
|
|
|
return Locomotive.get(params.get(ID)).stop(); |
|
|
|
|
|
|
|
case ACTION_TURN: |
|
|
|
|
|
|
|
return Locomotive.get(params.get(ID)).turn(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return html(); |
|
|
|
return html(); |
|
|
@ -413,10 +430,16 @@ public class Plan { |
|
|
|
case ACTION_ADD: |
|
|
|
case ACTION_ADD: |
|
|
|
return addTile(params.get(TILE),params.get(X),params.get(Y),null); |
|
|
|
return addTile(params.get(TILE),params.get(X),params.get(Y),null); |
|
|
|
case ACTION_ADD_LOCO: |
|
|
|
case ACTION_ADD_LOCO: |
|
|
|
|
|
|
|
case ACTION_FASTER10: |
|
|
|
|
|
|
|
case ACTION_STOP: |
|
|
|
|
|
|
|
case ACTION_SLOWER10: |
|
|
|
|
|
|
|
case ACTION_TURN: |
|
|
|
return locoAction(params); |
|
|
|
return locoAction(params); |
|
|
|
case ACTION_ADD_TRAIN: |
|
|
|
case ACTION_ADD_TRAIN: |
|
|
|
case ACTION_TRAIN: |
|
|
|
case ACTION_TRAIN: |
|
|
|
return trainAction(params); |
|
|
|
return trainAction(params); |
|
|
|
|
|
|
|
case ACTION_ANALYZE: |
|
|
|
|
|
|
|
return analyze(); |
|
|
|
case ACTION_CAR: |
|
|
|
case ACTION_CAR: |
|
|
|
return carAction(params); |
|
|
|
return carAction(params); |
|
|
|
case ACTION_CLICK: |
|
|
|
case ACTION_CLICK: |
|
|
@ -425,12 +448,15 @@ public class Plan { |
|
|
|
return connect(params); |
|
|
|
return connect(params); |
|
|
|
case ACTION_CU_PROPS: |
|
|
|
case ACTION_CU_PROPS: |
|
|
|
return cuProps(params); |
|
|
|
return cuProps(params); |
|
|
|
case ACTION_ANALYZE: |
|
|
|
|
|
|
|
return analyze(); |
|
|
|
|
|
|
|
case ACTION_LOCOS: |
|
|
|
case ACTION_LOCOS: |
|
|
|
return Locomotive.manager(); |
|
|
|
return Locomotive.manager(); |
|
|
|
|
|
|
|
case ACTION_EMERGENCY: |
|
|
|
|
|
|
|
power = true; |
|
|
|
|
|
|
|
return togglePower(); |
|
|
|
case ACTION_MOVE: |
|
|
|
case ACTION_MOVE: |
|
|
|
return moveTile(params.get(DIRECTION),params.get(Tile.ID)); |
|
|
|
return moveTile(params.get(DIRECTION),params.get(Tile.ID)); |
|
|
|
|
|
|
|
case ACTION_POWER: |
|
|
|
|
|
|
|
return togglePower(); |
|
|
|
case ACTION_ROUTE: |
|
|
|
case ACTION_ROUTE: |
|
|
|
return routeProperties(Integer.parseInt(params.get(ID))); |
|
|
|
return routeProperties(Integer.parseInt(params.get(ID))); |
|
|
|
case ACTION_SAVE: |
|
|
|
case ACTION_SAVE: |
|
|
@ -451,6 +477,13 @@ public class Plan { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Object togglePower() throws IOException { |
|
|
|
|
|
|
|
power = !power; |
|
|
|
|
|
|
|
String PW = power?"ON":"OFF"; |
|
|
|
|
|
|
|
queue("SET {} POWER "+PW); |
|
|
|
|
|
|
|
return t("Turned power {}.",PW); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Object trainAction(HashMap<String, String> params) throws IOException { |
|
|
|
private Object trainAction(HashMap<String, String> params) throws IOException { |
|
|
|
LOG.debug("Params: {}",params); |
|
|
|
LOG.debug("Params: {}",params); |
|
|
|
switch (params.get(ACTION)) { |
|
|
|
switch (params.get(ACTION)) { |
|
|
|