implemented route detection

This commit is contained in:
Stephan Richter
2020-09-15 14:34:15 +02:00
parent ce75a0c027
commit 467c8ea1c1
10 changed files with 132 additions and 16 deletions

View 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);
}

View File

@@ -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");

View File

@@ -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");

View File

@@ -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<>();
}
}

View File

@@ -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<>();
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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<>();
}
}