Browse Source

started re-implementing using java

lookup-tables
Stephan Richter 5 years ago
parent
commit
a9e0f2b3a7
  1. 10
      .classpath
  2. 26
      src/main/java/de/srsoftware/web4rail/Plan.java
  3. 5
      src/main/java/de/srsoftware/web4rail/tiles/BlockH.java
  4. 5
      src/main/java/de/srsoftware/web4rail/tiles/BlockV.java
  5. 5
      src/main/java/de/srsoftware/web4rail/tiles/Contact.java
  6. 16
      src/main/java/de/srsoftware/web4rail/tiles/DiagES.java
  7. 16
      src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java
  8. 16
      src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java
  9. 16
      src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java
  10. 14
      src/main/java/de/srsoftware/web4rail/tiles/StraightH.java
  11. 15
      src/main/java/de/srsoftware/web4rail/tiles/StraightV.java
  12. 5
      src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java
  13. 55
      src/main/java/de/srsoftware/web4rail/tiles/Tile.java
  14. 11
      src/main/java/de/srsoftware/web4rail/tiles/Turnout.java
  15. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutEN.java
  16. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutES.java
  17. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutNE.java
  18. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutNW.java
  19. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java
  20. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java
  21. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutWN.java
  22. 10
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java

10
.classpath

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

26
src/main/java/de/srsoftware/web4rail/Plan.java

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

5
src/main/java/de/srsoftware/web4rail/tiles/BlockH.java

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
package de.srsoftware.web4rail.tiles;
public class BlockH extends StraightH{
private Contact north,center,south;
}

5
src/main/java/de/srsoftware/web4rail/tiles/BlockV.java

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
package de.srsoftware.web4rail.tiles;
public class BlockV extends StraightV{
Contact west,center,east;
}

5
src/main/java/de/srsoftware/web4rail/tiles/Contact.java

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
package de.srsoftware.web4rail.tiles;
public class Contact {
}

16
src/main/java/de/srsoftware/web4rail/tiles/DiagES.java

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

16
src/main/java/de/srsoftware/web4rail/tiles/DiagNE.java

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

16
src/main/java/de/srsoftware/web4rail/tiles/DiagSW.java

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

16
src/main/java/de/srsoftware/web4rail/tiles/DiagWN.java

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

14
src/main/java/de/srsoftware/web4rail/tiles/StraightH.java

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

15
src/main/java/de/srsoftware/web4rail/tiles/StraightV.java

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

5
src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
package de.srsoftware.web4rail.tiles;
public abstract class StretchableTile extends Tile {
public int length = 1;
}

55
src/main/java/de/srsoftware/web4rail/tiles/Tile.java

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

11
src/main/java/de/srsoftware/web4rail/tiles/Turnout.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutEN.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutES.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNE.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutNW.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSE.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutSW.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWN.java

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

10
src/main/java/de/srsoftware/web4rail/tiles/TurnoutWS.java

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
package de.srsoftware.web4rail.tiles;
public class TurnoutWS extends Turnout{
@Override
public boolean hasConnector(Direction direction) {
return direction != Direction.NORTH;
}
}
Loading…
Cancel
Save