12 changed files with 188 additions and 9 deletions
@ -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 @@ |
|||||||
package de.srsoftware.web4rail; |
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 { |
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 @@ |
|||||||
package de.srsoftware.web4rail.tiles; |
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
import java.util.List; |
||||||
import java.util.Set; |
import java.util.Set; |
||||||
|
|
||||||
|
import de.srsoftware.web4rail.Connector; |
||||||
import de.srsoftware.web4rail.Route; |
import de.srsoftware.web4rail.Route; |
||||||
import de.srsoftware.web4rail.tiles.StretchableTile; |
|
||||||
|
|
||||||
public abstract class Block extends StretchableTile{ |
public abstract class Block extends StretchableTile{ |
||||||
public abstract Set<Route> routes(); |
public abstract Set<Route> routes(); |
||||||
|
|
||||||
|
public abstract List<Connector> startPoints(); |
||||||
} |
} |
||||||
|
@ -1,6 +1,21 @@ |
|||||||
package de.srsoftware.web4rail.tiles; |
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 @@ |
|||||||
package de.srsoftware.web4rail.tiles; |
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{ |
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 @@ |
|||||||
package de.srsoftware.web4rail.tiles; |
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