implemented correct behaviour of Train.stopNow
This commit is contained in:
@@ -386,7 +386,7 @@ public class Route extends BaseClass {
|
||||
|
||||
private void free() {
|
||||
for (Tile tile : path) {
|
||||
if (train.onTrace(tile)) {
|
||||
if (isSet(train) && train.onTrace(tile)) {
|
||||
tile.setState(Status.OCCUPIED, train);
|
||||
} else tile.free();
|
||||
}
|
||||
@@ -746,8 +746,8 @@ public class Route extends BaseClass {
|
||||
|
||||
public boolean reset() {
|
||||
LOG.debug("{}.reset()",this);
|
||||
|
||||
// TODO
|
||||
free();
|
||||
train = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -932,7 +932,11 @@ public class Train extends BaseClass implements Comparable<Train> {
|
||||
|
||||
public Object stopNow() {
|
||||
setSpeed(0);
|
||||
listeners.forEach(listener -> listener.on(Listener.Signal.STOP));
|
||||
listeners.forEach(listener -> listener.on(Listener.Signal.STOP)); // abort PathFinder
|
||||
if (isSet(route)) {
|
||||
route.reset();
|
||||
route = null;
|
||||
}
|
||||
return properties();
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ public class Contact extends Tile{
|
||||
state = true;
|
||||
if (isSet(timer)) timer.abort();
|
||||
Context context = new Context(this);
|
||||
if (isSet(train)) {
|
||||
if (isSet(train())) {
|
||||
train.contact(this);
|
||||
context.train(train);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user