implemented route detection
This commit is contained in:
9
src/main/java/de/srsoftware/web4rail/tiles/Cross.java
Normal file
9
src/main/java/de/srsoftware/web4rail/tiles/Cross.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
|
||||
public abstract class Cross extends Tile {
|
||||
public abstract List<Connector> offsetConnections(String from);
|
||||
}
|
||||
@@ -1,17 +1,43 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
|
||||
public class CrossH extends Tile{
|
||||
public class CrossH extends Cross{
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
switch (from) {
|
||||
case Plan.NORTH:
|
||||
return List.of(new Connector(x+1,y+1,Plan.NORTH));
|
||||
case Plan.SOUTH:
|
||||
return List.of(new Connector(x+1,y-1,Plan.SOUTH));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int len() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Connector> offsetConnections(String from) {
|
||||
switch (from) {
|
||||
case Plan.NORTH:
|
||||
return List.of(new Connector(x,y+1,Plan.NORTH));
|
||||
case Plan.SOUTH:
|
||||
return List.of(new Connector(x,y-1,Plan.SOUTH));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tag tag(Map<String,Object> replacements) throws IOException {
|
||||
return super.tag(replacements).size(200,100).attr("viewbox", "0 0 200 100");
|
||||
|
||||
@@ -1,17 +1,24 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
|
||||
public class CrossV extends Tile{
|
||||
public class CrossV extends Cross{
|
||||
|
||||
@Override
|
||||
public int height() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Connector> offsetConnections(String from) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tag tag(Map<String,Object> replacements) throws IOException {
|
||||
return super.tag(replacements).size(100,200).attr("viewbox", "0 0 100 200");
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
|
||||
public class DiagNE extends Tile{
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
switch (from) {
|
||||
case Plan.NORTH:
|
||||
return List.of(new Connector(x+1,y,Plan.WEST));
|
||||
case Plan.EAST:
|
||||
return List.of(new Connector(x,y-1,Plan.SOUTH));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,20 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
|
||||
public class DiagSW extends Tile{
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
switch (from) {
|
||||
case Plan.SOUTH:
|
||||
return List.of(new Connector(x-1,y,Plan.EAST));
|
||||
case Plan.WEST:
|
||||
return List.of(new Connector(x,y+1,Plan.NORTH));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,19 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
|
||||
public class Shadow extends Tile{
|
||||
|
||||
private Tile overlay;
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
if (overlay instanceof StretchableTile) return overlay.connections(from);
|
||||
if (overlay instanceof Cross) return ((Cross)overlay).offsetConnections(from);
|
||||
return super.connections(from);
|
||||
}
|
||||
|
||||
public Shadow(Tile overlay) {
|
||||
this.overlay = overlay;
|
||||
|
||||
@@ -1,7 +1,24 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
|
||||
public class StraightV extends StretchableTile{
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
switch (from) {
|
||||
case Plan.NORTH:
|
||||
return List.of(new Connector(x,y+height(),from));
|
||||
case Plan.SOUTH:
|
||||
return List.of(new Connector(x,y-1,from));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int height() {
|
||||
return length;
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan;
|
||||
|
||||
public class TurnoutNW extends Turnout{
|
||||
|
||||
|
||||
@Override
|
||||
public List<Connector> connections(String from) {
|
||||
switch (from) {
|
||||
case Plan.NORTH:
|
||||
return List.of(new Connector(x-1,y,Plan.EAST),new Connector(x, y+1, Plan.NORTH));
|
||||
case Plan.WEST:
|
||||
case Plan.SOUTH:
|
||||
return List.of(new Connector(x,y-1,Plan.SOUTH));
|
||||
}
|
||||
return new Vector<>();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user