12 changed files with 188 additions and 9 deletions
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
package de.srsoftware.web4rail; |
||||
|
||||
public class Connector { |
||||
|
||||
private String from; |
||||
private int y; |
||||
private int x; |
||||
|
||||
public Connector(int x, int y, String from) { |
||||
this.x = x; |
||||
this.y = y; |
||||
this.from = from; |
||||
} |
||||
|
||||
public String from() { |
||||
return from; |
||||
} |
||||
|
||||
public int x() { |
||||
return x; |
||||
} |
||||
|
||||
public int y() { |
||||
return y; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return getClass().getSimpleName()+"("+x+", "+y+", from "+from+")"; |
||||
} |
||||
} |
@ -1,5 +1,39 @@
@@ -1,5 +1,39 @@
|
||||
package de.srsoftware.web4rail; |
||||
|
||||
import java.util.List; |
||||
import java.util.Vector; |
||||
|
||||
import de.srsoftware.web4rail.tiles.Block; |
||||
import de.srsoftware.web4rail.tiles.Tile; |
||||
|
||||
public class Route { |
||||
|
||||
private Vector<Tile> path; |
||||
|
||||
public void add(Tile tile) { |
||||
path.add(tile); |
||||
} |
||||
|
||||
protected Route clone() { |
||||
Route clone = new Route(); |
||||
clone.path = new Vector<>(path); |
||||
return clone; |
||||
} |
||||
|
||||
public List<Route> multiply(int size) { |
||||
Vector<Route> routes = new Vector<Route>(); |
||||
for (int i=0; i<size; i++) routes.add(i==0 ? this : this.clone()); |
||||
return routes; |
||||
} |
||||
|
||||
public Route start(Block block) { |
||||
path = new Vector<Tile>(); |
||||
path.add(block); |
||||
return this; |
||||
} |
||||
|
||||
@Override |
||||
public String toString() { |
||||
return getClass().getSimpleName()+"("+path+")"; |
||||
} |
||||
} |
||||
|
@ -1,10 +1,13 @@
@@ -1,10 +1,13 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
import java.util.List; |
||||
import java.util.Set; |
||||
|
||||
import de.srsoftware.web4rail.Connector; |
||||
import de.srsoftware.web4rail.Route; |
||||
import de.srsoftware.web4rail.tiles.StretchableTile; |
||||
|
||||
public abstract class Block extends StretchableTile{ |
||||
public abstract Set<Route> routes(); |
||||
|
||||
public abstract List<Connector> startPoints(); |
||||
} |
||||
|
@ -1,6 +1,21 @@
@@ -1,6 +1,21 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public class DiagES extends Tile{ |
||||
import java.util.List; |
||||
import java.util.Vector; |
||||
|
||||
import de.srsoftware.web4rail.Connector; |
||||
import de.srsoftware.web4rail.Plan; |
||||
|
||||
public class DiagES extends Tile{ |
||||
|
||||
@Override |
||||
public List<Connector> connections(String from) { |
||||
switch (from) { |
||||
case Plan.SOUTH: |
||||
return List.of(new Connector(x+1,y,Plan.WEST)); |
||||
case Plan.EAST: |
||||
return List.of(new Connector(x,y+1,Plan.NORTH)); |
||||
} |
||||
return new Vector<>(); |
||||
} |
||||
} |
||||
|
@ -1,4 +1,21 @@
@@ -1,4 +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 DiagWN extends Tile{ |
||||
|
||||
@Override |
||||
public List<Connector> connections(String from) { |
||||
switch (from) { |
||||
case Plan.NORTH: |
||||
return List.of(new Connector(x-1,y,Plan.EAST)); |
||||
case Plan.WEST: |
||||
return List.of(new Connector(x,y-1,Plan.SOUTH)); |
||||
} |
||||
return new Vector<>(); |
||||
} |
||||
} |
||||
|
@ -1,7 +1,22 @@
@@ -1,7 +1,22 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public class TurnoutWN extends Turnout{ |
||||
import java.util.List; |
||||
import java.util.Vector; |
||||
|
||||
import de.srsoftware.web4rail.Connector; |
||||
import de.srsoftware.web4rail.Plan; |
||||
|
||||
public class TurnoutWN extends Turnout{ |
||||
|
||||
@Override |
||||
public List<Connector> connections(String from) { |
||||
switch (from) { |
||||
case Plan.WEST: |
||||
return List.of(new Connector(x+1,y,from),new Connector(x, y-1, Plan.SOUTH)); |
||||
case Plan.EAST: |
||||
case Plan.NORTH: |
||||
return List.of(new Connector(x-1,y,Plan.EAST)); |
||||
} |
||||
return new Vector<>(); |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue