22 changed files with 295 additions and 0 deletions
@ -0,0 +1,10 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public class BlockH extends StraightH{ |
||||
private Contact north,center,south; |
||||
} |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public class BlockV extends StraightV{ |
||||
Contact west,center,east; |
||||
} |
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public class Contact { |
||||
|
||||
} |
@ -0,0 +1,16 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.tiles; |
||||
|
||||
public abstract class StretchableTile extends Tile { |
||||
public int length = 1; |
||||
} |
@ -0,0 +1,55 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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 @@
@@ -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