if(isNull(block)&&(error=true))LOG.warn("{} → {}.availableRoutes called without context.block!",inset,Train.class.getSimpleName());
if(isNull(train)&&(error=true))LOG.warn("{}→ {}.availableRoutes called without context.train!",inset,Train.class.getSimpleName());
if(isNull(block)&&(error=true))
LOG.warn("{} → {}.availableRoutes called without context.block!",inset,Train.class.getSimpleName());
if(isNull(train)&&(error=true))
LOG.warn("{}→ {}.availableRoutes called without context.train!",inset,Train.class.getSimpleName());
if(error)returnavailableRoutes;
Blockdestination=train.destination();
@ -65,7 +65,9 @@ public class RouteManager extends BaseClass implements Runnable {
@@ -65,7 +65,9 @@ public class RouteManager extends BaseClass implements Runnable {
continue;
}
HashSet<Tile>stuckTrace=train.stuckTrace();// if train has been stopped in between two blocks lastly: only allow routes that do not conflict with current train position
HashSet<Tile>stuckTrace=train.stuckTrace();// if train has been stopped in between two blocks lastly:
// only allow routes that do not conflict with current train
LOG.debug("Stuck train occupies tiles ({}) outside of {} – not allowed.",stuckTrace,routeCandidate);
continue;
@ -80,12 +82,16 @@ public class RouteManager extends BaseClass implements Runnable {
@@ -80,12 +82,16 @@ public class RouteManager extends BaseClass implements Runnable {
}
intpriority=0;
if(isSet(startDirection)&&routeCandidate.startDirection!=startDirection){// Route startet entgegen der aktuellen Fahrtrichtung des Zuges
if(isSet(startDirection)&&routeCandidate.startDirection!=startDirection){// Route startet entgegen
// der aktuellen
// Fahrtrichtung des Zuges
if(!train.pushPull)continue;// Zug kann nicht wenden
if(!block.turnAllowed)continue;// Wenden im Block nicht gestattet
priority-=5;
}
if(routeCandidate==currentRoute)priority-=10;// möglichst andere Route als zuvor wählen // TODO: den Routen einen "last-used" Zeitstempel hinzufügen, und diesen mit in die Priorisierung einbeziehen
if(routeCandidate==currentRoute)priority-=10;// möglichst andere Route als zuvor wählen // TODO: den
// Routen einen "last-used" Zeitstempel hinzufügen, und
// diesen mit in die Priorisierung einbeziehen
if(isSet(destination)){
if(routeCandidate.endBlock()==destination){// route goes directly to destination
@ -93,11 +99,13 @@ public class RouteManager extends BaseClass implements Runnable {
@@ -93,11 +99,13 @@ public class RouteManager extends BaseClass implements Runnable {