now adding connector directly after target blockt to route
This commit is contained in:
@@ -29,6 +29,7 @@ import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.BlockH;
|
||||
import de.srsoftware.web4rail.tiles.BlockV;
|
||||
import de.srsoftware.web4rail.tiles.Contact;
|
||||
import de.srsoftware.web4rail.tiles.ContactH;
|
||||
import de.srsoftware.web4rail.tiles.ContactV;
|
||||
import de.srsoftware.web4rail.tiles.CrossH;
|
||||
@@ -171,7 +172,20 @@ public class Plan {
|
||||
Vector<Route> results = new Vector<>();
|
||||
if (tile == null) return results;
|
||||
Tile addedTile = route.add(tile,connector.from);
|
||||
if (addedTile instanceof Block) return List.of(route);
|
||||
if (addedTile instanceof Block) {
|
||||
Map<Connector, State> cons = addedTile.connections(connector.from);
|
||||
LOG.debug("Found {}, coming from {}.",addedTile,connector.from);
|
||||
for (Connector con : cons.keySet()) { // falls direkt nach dem Block noch ein Kontakt kommt: diesen mit zu Route hinzufügen
|
||||
LOG.debug("This is connected to {}",con);
|
||||
Tile nextTile = get(con.x,con.y,false);
|
||||
if (nextTile instanceof Contact) {
|
||||
LOG.debug("{} is followed by {}",addedTile,nextTile);
|
||||
route.add(nextTile, con.from);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return List.of(route);
|
||||
}
|
||||
Map<Connector, State> connectors = tile.connections(connector.from);
|
||||
List<Route>routes = route.multiply(connectors.size());
|
||||
LOG.debug("{}",tile);
|
||||
|
||||
@@ -72,12 +72,12 @@ public class Route {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i=0; i<path.size();i++) {
|
||||
Tile tile = path.get(i);
|
||||
if (i==0) {
|
||||
if (i>0) sb.append(" – ");
|
||||
if (tile instanceof Block) {
|
||||
sb.append(((Block)tile).name);
|
||||
} else if (i==path.size()-1){
|
||||
sb.append("-"+((Block)tile).name);
|
||||
if (i>0) break; // Kontakt nach dem Ziel-Block nicht mitnehmen
|
||||
} else {
|
||||
sb.append("-"+tile.x+":"+tile.y);
|
||||
sb.append(tile.x+":"+tile.y);
|
||||
}
|
||||
}
|
||||
id = sb.toString();
|
||||
|
||||
@@ -1,12 +1,27 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
|
||||
public class BlockH extends Block{
|
||||
Contact north,center,south;
|
||||
|
||||
@Override
|
||||
public Map<Connector, State> connections(Direction from) {
|
||||
switch (from) {
|
||||
case WEST:
|
||||
return Map.of(new Connector(x+len(),y,Direction.WEST),State.UNDEF);
|
||||
case EAST:
|
||||
return Map.of(new Connector(x-1,y,Direction.EAST),State.UNDEF);
|
||||
default:
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int len() {
|
||||
|
||||
@@ -1,13 +1,28 @@
|
||||
package de.srsoftware.web4rail.tiles;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import de.srsoftware.web4rail.Connector;
|
||||
import de.srsoftware.web4rail.Plan.Direction;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
|
||||
public class BlockV extends Block{
|
||||
Contact west,center,east;
|
||||
|
||||
@Override
|
||||
public Map<Connector, State> connections(Direction from) {
|
||||
switch (from) {
|
||||
case NORTH:
|
||||
return Map.of(new Connector(x,y+height(),Direction.NORTH),State.UNDEF);
|
||||
case SOUTH:
|
||||
return Map.of(new Connector(x,y-1,Direction.SOUTH),State.UNDEF);
|
||||
default:
|
||||
return new HashMap<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int height() {
|
||||
return length;
|
||||
|
||||
Reference in New Issue
Block a user