renamed turnouts, worked on route discovery
@@ -107,7 +107,7 @@ svg circle{
|
|||||||
|
|
||||||
.window{
|
.window{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 10px;
|
top: 50%;
|
||||||
bottom: 10px;
|
bottom: 10px;
|
||||||
left: 10px;
|
left: 10px;
|
||||||
right: 10px;
|
right: 10px;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 148 B |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
|
Before Width: | Height: | Size: 148 B After Width: | Height: | Size: 148 B |
|
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 156 B |
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 152 B |
@@ -12,6 +12,7 @@ import java.util.Collection;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
@@ -38,7 +39,6 @@ import de.srsoftware.web4rail.tiles.EndS;
|
|||||||
import de.srsoftware.web4rail.tiles.EndW;
|
import de.srsoftware.web4rail.tiles.EndW;
|
||||||
import de.srsoftware.web4rail.tiles.Eraser;
|
import de.srsoftware.web4rail.tiles.Eraser;
|
||||||
import de.srsoftware.web4rail.tiles.Shadow;
|
import de.srsoftware.web4rail.tiles.Shadow;
|
||||||
import de.srsoftware.web4rail.tiles.Signal;
|
|
||||||
import de.srsoftware.web4rail.tiles.SignalE;
|
import de.srsoftware.web4rail.tiles.SignalE;
|
||||||
import de.srsoftware.web4rail.tiles.SignalN;
|
import de.srsoftware.web4rail.tiles.SignalN;
|
||||||
import de.srsoftware.web4rail.tiles.SignalS;
|
import de.srsoftware.web4rail.tiles.SignalS;
|
||||||
@@ -46,14 +46,15 @@ import de.srsoftware.web4rail.tiles.SignalW;
|
|||||||
import de.srsoftware.web4rail.tiles.StraightH;
|
import de.srsoftware.web4rail.tiles.StraightH;
|
||||||
import de.srsoftware.web4rail.tiles.StraightV;
|
import de.srsoftware.web4rail.tiles.StraightV;
|
||||||
import de.srsoftware.web4rail.tiles.Tile;
|
import de.srsoftware.web4rail.tiles.Tile;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutEN;
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutES;
|
import de.srsoftware.web4rail.tiles.TurnoutLE;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutNE;
|
import de.srsoftware.web4rail.tiles.TurnoutLN;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutNW;
|
import de.srsoftware.web4rail.tiles.TurnoutLS;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutSE;
|
import de.srsoftware.web4rail.tiles.TurnoutLW;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutSW;
|
import de.srsoftware.web4rail.tiles.TurnoutRE;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutWN;
|
import de.srsoftware.web4rail.tiles.TurnoutRN;
|
||||||
import de.srsoftware.web4rail.tiles.TurnoutWS;
|
import de.srsoftware.web4rail.tiles.TurnoutRS;
|
||||||
|
import de.srsoftware.web4rail.tiles.TurnoutRW;
|
||||||
|
|
||||||
public class Plan {
|
public class Plan {
|
||||||
public enum Direction{
|
public enum Direction{
|
||||||
@@ -102,6 +103,7 @@ public class Plan {
|
|||||||
private String analyze() {
|
private String analyze() {
|
||||||
Vector<Route> routes = new Vector<Route>();
|
Vector<Route> routes = new Vector<Route>();
|
||||||
for (Block block : blocks) {
|
for (Block block : blocks) {
|
||||||
|
block.routes().clear();
|
||||||
for (Connector con : block.startPoints()) routes.addAll(follow(new Route().start(block),con));
|
for (Connector con : block.startPoints()) routes.addAll(follow(new Route().start(block),con));
|
||||||
}
|
}
|
||||||
this.routes.clear();
|
this.routes.clear();
|
||||||
@@ -112,19 +114,28 @@ public class Plan {
|
|||||||
return t("Found {} routes.",routes.size());
|
return t("Found {} routes.",routes.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
private Collection<Route> follow(Route route, Connector con) {
|
private Collection<Route> follow(Route route, Connector connector) {
|
||||||
Tile tile = get(con.x,con.y);
|
Tile tile = get(connector.x,connector.y);
|
||||||
Vector<Route> results = new Vector<>();
|
Vector<Route> results = new Vector<>();
|
||||||
if (tile == null) return results;
|
if (tile == null) return results;
|
||||||
Tile added = route.add(tile instanceof Shadow ? ((Shadow)tile).overlay() : tile);
|
Tile addedTile = route.add(tile,connector.from);
|
||||||
if (added instanceof Signal) {
|
if (addedTile instanceof Block) return List.of(route);
|
||||||
Signal signal = (Signal) added;
|
Map<Connector, State> connectors = tile.connections(connector.from);
|
||||||
if (signal.isAffectedFrom(con.from)) route.addSignal(signal);
|
|
||||||
}
|
|
||||||
if (added instanceof Block) return List.of(route);
|
|
||||||
List<Connector> connectors = tile.connections(con.from);
|
|
||||||
List<Route>routes = route.multiply(connectors.size());
|
List<Route>routes = route.multiply(connectors.size());
|
||||||
for (int i=0; i<connectors.size(); i++) results.addAll(follow(routes.get(i),connectors.get(i)));
|
LOG.debug("{}",tile);
|
||||||
|
if (connectors.size()>1) LOG.debug("SPLITTING @ {}",tile);
|
||||||
|
|
||||||
|
for (Entry<Connector, State> entry: connectors.entrySet()) {
|
||||||
|
route = routes.remove(0);
|
||||||
|
connector = entry.getKey();
|
||||||
|
State state = entry.getValue();
|
||||||
|
route.setLast(state);
|
||||||
|
if (connectors.size()>1) {
|
||||||
|
LOG.debug("RESUMING from {}",tile);
|
||||||
|
}
|
||||||
|
results.addAll(follow(route,connector));
|
||||||
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -267,7 +278,9 @@ public class Plan {
|
|||||||
}
|
}
|
||||||
return t("Unknown action: {}",action);
|
return t("Unknown action: {}",action);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return e.getMessage();
|
String msg = e.getMessage();
|
||||||
|
if (msg == null || msg.isEmpty()) msg = t("An unknown error occured!");
|
||||||
|
return msg;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -363,14 +376,14 @@ public class Plan {
|
|||||||
tiles.append(new EndW().tag(null));
|
tiles.append(new EndW().tag(null));
|
||||||
tiles.append(new EndN().tag(null));
|
tiles.append(new EndN().tag(null));
|
||||||
tiles.append(new EndS().tag(null));
|
tiles.append(new EndS().tag(null));
|
||||||
tiles.append(new TurnoutSW().tag(null));
|
tiles.append(new TurnoutRS().tag(null));
|
||||||
tiles.append(new TurnoutSE().tag(null));
|
tiles.append(new TurnoutRN().tag(null));
|
||||||
tiles.append(new TurnoutNW().tag(null));
|
tiles.append(new TurnoutRW().tag(null));
|
||||||
tiles.append(new TurnoutNE().tag(null));
|
tiles.append(new TurnoutRE().tag(null));
|
||||||
tiles.append(new TurnoutES().tag(null));
|
tiles.append(new TurnoutLN().tag(null));
|
||||||
tiles.append(new TurnoutEN().tag(null));
|
tiles.append(new TurnoutLS().tag(null));
|
||||||
tiles.append(new TurnoutWS().tag(null));
|
tiles.append(new TurnoutLW().tag(null));
|
||||||
tiles.append(new TurnoutWN().tag(null));
|
tiles.append(new TurnoutLE().tag(null));
|
||||||
tiles.append(new CrossH().tag(null));
|
tiles.append(new CrossH().tag(null));
|
||||||
tiles.append(new CrossV().tag(null));
|
tiles.append(new CrossV().tag(null));
|
||||||
tiles.append(new Eraser().tag(null));
|
tiles.append(new Eraser().tag(null));
|
||||||
|
|||||||
@@ -1,38 +1,47 @@
|
|||||||
package de.srsoftware.web4rail;
|
package de.srsoftware.web4rail;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import de.keawe.tools.translations.Translation;
|
import de.keawe.tools.translations.Translation;
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.tools.Tag;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
import de.srsoftware.web4rail.tiles.Block;
|
import de.srsoftware.web4rail.tiles.Block;
|
||||||
import de.srsoftware.web4rail.tiles.Contact;
|
import de.srsoftware.web4rail.tiles.Contact;
|
||||||
|
import de.srsoftware.web4rail.tiles.Shadow;
|
||||||
import de.srsoftware.web4rail.tiles.Signal;
|
import de.srsoftware.web4rail.tiles.Signal;
|
||||||
import de.srsoftware.web4rail.tiles.Tile;
|
import de.srsoftware.web4rail.tiles.Tile;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class Route {
|
public class Route {
|
||||||
|
|
||||||
private Vector<Tile> path;
|
private Vector<Tile> path;
|
||||||
private Vector<Signal> signals;
|
private Vector<Signal> signals;
|
||||||
private Vector<Contact> contacts;
|
private Vector<Contact> contacts;
|
||||||
|
private HashMap<Turnout,Turnout.State> turnouts;
|
||||||
private String id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public Tile add(Tile tile) {
|
public Tile add(Tile tile, Direction direrction) {
|
||||||
|
if (tile instanceof Shadow) tile = ((Shadow)tile).overlay();
|
||||||
path.add(tile);
|
path.add(tile);
|
||||||
if (tile instanceof Contact) contacts.add((Contact) tile);
|
if (tile instanceof Contact) contacts.add((Contact) tile);
|
||||||
return tile;
|
if (tile instanceof Signal) {
|
||||||
}
|
Signal signal = (Signal) tile;
|
||||||
|
if (signal.isAffectedFrom(direrction)) signals.add(signal);
|
||||||
|
}
|
||||||
|
|
||||||
public Route addSignal(Signal signal) {
|
return tile;
|
||||||
signals.add(signal);
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Route clone() {
|
protected Route clone() {
|
||||||
Route clone = new Route();
|
Route clone = new Route();
|
||||||
clone.contacts = new Vector<Contact>(contacts);
|
clone.contacts = new Vector<Contact>(contacts);
|
||||||
clone.signals = new Vector<Signal>(signals);
|
clone.signals = new Vector<Signal>(signals);
|
||||||
|
clone.turnouts = new HashMap<>(turnouts);
|
||||||
clone.path = new Vector<>(path);
|
clone.path = new Vector<>(path);
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
@@ -68,14 +77,22 @@ public class Route {
|
|||||||
|
|
||||||
public Window properties() {
|
public Window properties() {
|
||||||
Window win = new Window("route-properties",t("Properties of {})",this));
|
Window win = new Window("route-properties",t("Properties of {})",this));
|
||||||
|
|
||||||
new Tag("h4").content(t("Signals")).addTo(win);
|
new Tag("h4").content(t("Signals")).addTo(win);
|
||||||
Tag list = new Tag("ul");
|
Tag list = new Tag("ul");
|
||||||
for (Signal s : signals) new Tag("li").content(s.toString()).addTo(list);
|
for (Signal s : signals) new Tag("li").content(s.toString()).addTo(list);
|
||||||
list.addTo(win);
|
list.addTo(win);
|
||||||
|
|
||||||
new Tag("h4").content(t("Contacts")).addTo(win);
|
new Tag("h4").content(t("Contacts")).addTo(win);
|
||||||
list = new Tag("ul");
|
list = new Tag("ul");
|
||||||
for (Contact c : contacts) new Tag("li").content(c.toString()).addTo(list);
|
for (Contact c : contacts) new Tag("li").content(c.toString()).addTo(list);
|
||||||
list.addTo(win);
|
list.addTo(win);
|
||||||
|
|
||||||
|
new Tag("h4").content(t("Turnouts")).addTo(win);
|
||||||
|
list = new Tag("ul");
|
||||||
|
for (Entry<Turnout, State> entry : turnouts.entrySet()) new Tag("li").content(entry.getKey()+" : "+entry.getValue()).addTo(list);
|
||||||
|
list.addTo(win);
|
||||||
|
|
||||||
return win;
|
return win;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,6 +100,7 @@ public class Route {
|
|||||||
contacts = new Vector<Contact>();
|
contacts = new Vector<Contact>();
|
||||||
signals = new Vector<Signal>();
|
signals = new Vector<Signal>();
|
||||||
path = new Vector<Tile>();
|
path = new Vector<Tile>();
|
||||||
|
turnouts = new HashMap<>();
|
||||||
path.add(block);
|
path.add(block);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -99,4 +117,10 @@ public class Route {
|
|||||||
protected static String t(String txt, Object...fills) {
|
protected static String t(String txt, Object...fills) {
|
||||||
return Translation.get(Application.class, txt, fills);
|
return Translation.get(Application.class, txt, fills);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLast(State state) {
|
||||||
|
if (state == null || state == State.UNDEF) return;
|
||||||
|
Tile lastTile = path.lastElement();
|
||||||
|
if (lastTile instanceof Turnout) turnouts.put((Turnout) lastTile,state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class ContactH extends Contact {
|
public class ContactH extends Contact {
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x+1,y,from));
|
return Map.of(new Connector(x+1,y,from),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x-1,y,from));
|
return Map.of(new Connector(x-1,y,from),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class ContactV extends Contact {
|
public class ContactV extends Contact {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x,y+1,from));
|
return Map.of(new Connector(x,y+1,from),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x,y-1,from));
|
return Map.of(new Connector(x,y-1,from),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
public abstract class Cross extends Tile {
|
public abstract class Cross extends Tile {
|
||||||
public abstract List<Connector> offsetConnections(Direction from);
|
public abstract Map<Connector,Turnout.State> offsetConnections(Direction from);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.tools.Tag;
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class CrossH extends Cross{
|
public class CrossH extends Cross{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x+1,y+1,Direction.NORTH));
|
return Map.of(new Connector(x+1,y+1,Direction.NORTH),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x+1,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x+1,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,14 +29,14 @@ public class CrossH extends Cross{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> offsetConnections(Direction from) {
|
public Map<Connector,State> offsetConnections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.tools.Tag;
|
import de.srsoftware.tools.Tag;
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class CrossV extends Cross{
|
public class CrossV extends Cross{
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ public class CrossV extends Cross{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> offsetConnections(Direction from) {
|
public Map<Connector, State> offsetConnections(Direction from) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class DiagES extends Tile{
|
public class DiagES extends Tile{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<Connector>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class DiagNE extends Tile{
|
public class DiagNE extends Tile{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class DiagSW extends Tile{
|
public class DiagSW extends Tile{
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class DiagWN extends Tile{
|
public class DiagWN extends Tile{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,17 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class Shadow extends Tile{
|
public class Shadow extends Tile{
|
||||||
|
|
||||||
private Tile overlay;
|
private Tile overlay;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
if (overlay instanceof StretchableTile) return overlay.connections(from);
|
if (overlay instanceof StretchableTile) return overlay.connections(from);
|
||||||
if (overlay instanceof Cross) return ((Cross)overlay).offsetConnections(from);
|
if (overlay instanceof Cross) return ((Cross)overlay).offsetConnections(from);
|
||||||
return super.connections(from);
|
return super.connections(from);
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class SignalE extends Signal{
|
public class SignalE extends Signal{
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class SignalN extends Signal {
|
public class SignalN extends Signal {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class SignalS extends Signal{
|
public class SignalS extends Signal{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,22 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class SignalW extends Signal{
|
public class SignalW extends Signal{
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class StraightH extends StretchableTile{
|
public class StraightH extends StretchableTile{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case WEST:
|
case WEST:
|
||||||
return List.of(new Connector(x+len(),y,Direction.WEST));
|
return Map.of(new Connector(x+len(),y,Direction.WEST),State.UNDEF);
|
||||||
case EAST:
|
case EAST:
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.HashMap;
|
||||||
import java.util.Vector;
|
import java.util.Map;
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
import de.srsoftware.web4rail.Connector;
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||||
|
|
||||||
public class StraightV extends StretchableTile{
|
public class StraightV extends StretchableTile{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Connector> connections(Direction from) {
|
public Map<Connector, State> connections(Direction from) {
|
||||||
switch (from) {
|
switch (from) {
|
||||||
case NORTH:
|
case NORTH:
|
||||||
return List.of(new Connector(x,y+height(),Direction.NORTH));
|
return Map.of(new Connector(x,y+height(),Direction.NORTH),State.UNDEF);
|
||||||
case SOUTH:
|
case SOUTH:
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||||
default:
|
default:
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ public abstract class Tile {
|
|||||||
return new JSONObject();
|
return new JSONObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Connector> connections(Direction from){
|
public Map<Connector,Turnout.State> connections(Direction from){
|
||||||
return new Vector<>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
public abstract class Turnout extends Tile {
|
public abstract class Turnout extends Tile {
|
||||||
|
public enum State{
|
||||||
|
LEFT,STRAIGHT,RIGHT,UNDEF;
|
||||||
|
}
|
||||||
private boolean straight = true;
|
private boolean straight = true;
|
||||||
|
|
||||||
public boolean toggle() {
|
public boolean toggle() {
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutEN extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case EAST:
|
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH),new Connector(x-1, y, Direction.EAST));
|
|
||||||
case NORTH:
|
|
||||||
case WEST:
|
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutES extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case EAST:
|
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH),new Connector(x-1, y, Direction.EAST));
|
|
||||||
case SOUTH:
|
|
||||||
case WEST:
|
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutLE.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutLE extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.LEFT,new Connector(x-1, y, Direction.EAST),State.STRAIGHT);
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.LEFT);
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.STRAIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutLN.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutLN extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.STRAIGHT,new Connector(x+1, y, Direction.WEST),State.LEFT);
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.STRAIGHT);
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.LEFT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutLS.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutLS extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.LEFT,new Connector(x, y-1, Direction.SOUTH),State.STRAIGHT);
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.LEFT);
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.STRAIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutLW.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutLW extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.STRAIGHT,new Connector(x, y-1, Direction.SOUTH),State.LEFT);
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.STRAIGHT);
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.LEFT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutNE extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case NORTH:
|
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH),new Connector(x+1, y, Direction.WEST));
|
|
||||||
case SOUTH:
|
|
||||||
case EAST:
|
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutNW extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case NORTH:
|
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST),new Connector(x, y+1, Direction.NORTH));
|
|
||||||
case WEST:
|
|
||||||
case SOUTH:
|
|
||||||
return List.of(new Connector(x,y-1,Direction.SOUTH));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutRE.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutRE extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.RIGHT,new Connector(x-1, y, Direction.EAST),State.STRAIGHT);
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.RIGHT);
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.STRAIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutRN.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutRN extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.RIGHT,new Connector(x, y+1, Direction.NORTH),State.STRAIGHT);
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.RIGHT);
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.STRAIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutRS.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutRS extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.RIGHT,new Connector(x, y-1, Direction.SOUTH),State.STRAIGHT);
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.RIGHT);
|
||||||
|
case NORTH:
|
||||||
|
return Map.of(new Connector(x,y+1,Direction.NORTH),State.STRAIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/main/java/de/srsoftware/web4rail/tiles/TurnoutRW.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package de.srsoftware.web4rail.tiles;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector;
|
||||||
|
import de.srsoftware.web4rail.Plan.Direction;
|
||||||
|
|
||||||
|
public class TurnoutRW extends Turnout{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<Connector, State> connections(Direction from) {
|
||||||
|
switch (from) {
|
||||||
|
case WEST:
|
||||||
|
return Map.of(new Connector(x+1,y,Direction.WEST),State.STRAIGHT,new Connector(x, y+1, Direction.NORTH),State.RIGHT);
|
||||||
|
case EAST:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.STRAIGHT);
|
||||||
|
case SOUTH:
|
||||||
|
return Map.of(new Connector(x-1,y,Direction.EAST),State.RIGHT);
|
||||||
|
default:
|
||||||
|
return new HashMap<>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutSE extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case SOUTH:
|
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST),new Connector(x, y-1, Direction.SOUTH));
|
|
||||||
case EAST:
|
|
||||||
case NORTH:
|
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutSW extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case SOUTH:
|
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST),new Connector(x, y-1, Direction.SOUTH));
|
|
||||||
case WEST:
|
|
||||||
case NORTH:
|
|
||||||
return List.of(new Connector(x,y+1,Direction.NORTH));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutWN extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case WEST:
|
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST),new Connector(x, y-1, Direction.SOUTH));
|
|
||||||
case EAST:
|
|
||||||
case NORTH:
|
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
package de.srsoftware.web4rail.tiles;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Vector;
|
|
||||||
|
|
||||||
import de.srsoftware.web4rail.Connector;
|
|
||||||
import de.srsoftware.web4rail.Plan.Direction;
|
|
||||||
|
|
||||||
public class TurnoutWS extends Turnout{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<Connector> connections(Direction from) {
|
|
||||||
switch (from) {
|
|
||||||
case WEST:
|
|
||||||
return List.of(new Connector(x+1,y,Direction.WEST),new Connector(x, y+1, Direction.NORTH));
|
|
||||||
case EAST:
|
|
||||||
case SOUTH:
|
|
||||||
return List.of(new Connector(x-1,y,Direction.EAST));
|
|
||||||
default:
|
|
||||||
return new Vector<>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||