22 changed files with 295 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<classpath> |
||||||
|
<classpathentry kind="src" path="src/main/java"/> |
||||||
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> |
||||||
|
<attributes> |
||||||
|
<attribute name="module" value="true"/> |
||||||
|
</attributes> |
||||||
|
</classpathentry> |
||||||
|
<classpathentry kind="output" path="bin"/> |
||||||
|
</classpath> |
@ -0,0 +1,26 @@ |
|||||||
|
package de.srsoftware.web4rail; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
|
||||||
|
import de.srsoftware.web4rail.tiles.Tile; |
||||||
|
|
||||||
|
public class Plan { |
||||||
|
private HashMap<Integer,HashMap<Integer,Tile>> tiles = new HashMap<Integer,HashMap<Integer,Tile>>(); |
||||||
|
|
||||||
|
public Tile set(int x,int y,Tile tile) { |
||||||
|
Tile old = null; |
||||||
|
HashMap<Integer, Tile> column = tiles.get(x); |
||||||
|
if (column == null) { |
||||||
|
column = new HashMap<Integer,Tile>(); |
||||||
|
tiles.put(x, column); |
||||||
|
} |
||||||
|
old = column.get(y); |
||||||
|
column.put(y,tile); |
||||||
|
return old; |
||||||
|
} |
||||||
|
|
||||||
|
public Tile get(int x, int y) { |
||||||
|
HashMap<Integer, Tile> column = tiles.get(x); |
||||||
|
return column == null ? null : column.get(y).position(x,y); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class BlockH extends StraightH{ |
||||||
|
private Contact north,center,south; |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class BlockV extends StraightV{ |
||||||
|
Contact west,center,east; |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class Contact { |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class DiagES extends Tile{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case SOUTH: |
||||||
|
case EAST: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class DiagNE extends Tile{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case NORTH: |
||||||
|
case EAST: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class DiagSW extends Tile{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case SOUTH: |
||||||
|
case WEST: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,16 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class DiagWN extends Tile{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case NORTH: |
||||||
|
case WEST: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,14 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class StraightH extends StretchableTile{ |
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case EAST: |
||||||
|
case WEST: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class StraightV extends StretchableTile{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
switch (direction) { |
||||||
|
case NORTH: |
||||||
|
case SOUTH: |
||||||
|
return true; |
||||||
|
default: |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,5 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public abstract class StretchableTile extends Tile { |
||||||
|
public int length = 1; |
||||||
|
} |
@ -0,0 +1,55 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
|
||||||
|
public abstract class Tile { |
||||||
|
|
||||||
|
public enum Direction{ |
||||||
|
NORTH,SOUTH,EAST,WEST; |
||||||
|
} |
||||||
|
private class Position { |
||||||
|
int x,y; |
||||||
|
} |
||||||
|
|
||||||
|
Position position; |
||||||
|
private HashMap<Direction,Tile> neighbours = new HashMap(); |
||||||
|
|
||||||
|
public abstract boolean hasConnector(Direction direction); |
||||||
|
|
||||||
|
public boolean connect(Direction direction, Tile neighbour) { |
||||||
|
if (hasConnector(direction)) { |
||||||
|
switch (direction) { |
||||||
|
case NORTH: |
||||||
|
neighbour.neighbours.put(Direction.SOUTH, this); |
||||||
|
neighbour.position.x = position.x; |
||||||
|
neighbour.position.y = position.y-1; |
||||||
|
case SOUTH: |
||||||
|
neighbour.neighbours.put(Direction.NORTH, this); |
||||||
|
neighbour.position.x = position.x; |
||||||
|
neighbour.position.y = position.y+1; |
||||||
|
case EAST: |
||||||
|
neighbour.neighbours.put(Direction.WEST, this); |
||||||
|
neighbour.position.x = position.x+1; |
||||||
|
neighbour.position.y = position.y; |
||||||
|
case WEST: |
||||||
|
neighbour.neighbours.put(Direction.EAST, this); |
||||||
|
neighbour.position.x = position.x-1; |
||||||
|
neighbour.position.y = position.y; |
||||||
|
} |
||||||
|
neighbours.put(direction, neighbour); |
||||||
|
return true; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public Tile neighbour(Direction direction) { |
||||||
|
return neighbours.get(direction); |
||||||
|
} |
||||||
|
|
||||||
|
public Tile position(int x, int y) { |
||||||
|
position.x = x; |
||||||
|
position.y = y; |
||||||
|
return this; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,11 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public abstract class Turnout extends Tile { |
||||||
|
|
||||||
|
private boolean straight = true; |
||||||
|
|
||||||
|
public boolean toggle() { |
||||||
|
straight = !straight; |
||||||
|
return straight; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutEN extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.SOUTH; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutES extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.NORTH; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutNE extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.WEST; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutNW extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.EAST; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutSE extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.WEST; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutSW extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.EAST; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package de.srsoftware.web4rail.tiles; |
||||||
|
|
||||||
|
public class TurnoutWN extends Turnout{ |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasConnector(Direction direction) { |
||||||
|
return direction != Direction.SOUTH; |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue