Simulation: Fix undefined segment, keep history
This commit is contained in:
parent
5dfa49b75f
commit
41a92ff826
|
@ -24,6 +24,8 @@ class Course
|
|||
|
||||
this.position = [0, 0];
|
||||
this.angle = 0;
|
||||
|
||||
this.history = [];
|
||||
}
|
||||
|
||||
get currentSegment()
|
||||
|
@ -223,6 +225,7 @@ class Course
|
|||
network.stops[this.currentStop].lon,
|
||||
network.stops[this.currentStop].lat,
|
||||
]);
|
||||
this.history.push(['arriveToStop', stop]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -233,6 +236,14 @@ class Course
|
|||
*/
|
||||
moveToStop(stop, arrivalTime)
|
||||
{
|
||||
if (!(`${this.currentStop}-${stop}` in network.segments))
|
||||
{
|
||||
console.warn(`Course ${this.id} is cannot go from stop
|
||||
${this.currentStop} to stop ${stop}. Teleporting to ${stop}`);
|
||||
this.arriveToStop(stop);
|
||||
return;
|
||||
}
|
||||
|
||||
this.state = 'moving';
|
||||
this.departureStop = this.currentStop;
|
||||
this.arrivalStop = stop;
|
||||
|
@ -243,15 +254,10 @@ class Course
|
|||
network.stops[this.departureStop].lon,
|
||||
network.stops[this.departureStop].lat,
|
||||
]);
|
||||
this.history.push(['moveToStop', stop, arrivalTime]);
|
||||
|
||||
console.log(`Course ${this.id} leaving stop ${this.currentStop} \
|
||||
console.info(`Course ${this.id} leaving stop ${this.currentStop} \
|
||||
with initial speed ${this.computeTheoreticalSpeed() * 3600} km/h`);
|
||||
|
||||
if (this.currentSegment === undefined)
|
||||
{
|
||||
console.error(`Course ${this.id} is on an undefined segment from \
|
||||
stop ${this.departureStop} to stop ${this.arrivalStop}`);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -295,16 +301,25 @@ const updateData = async (courses) =>
|
|||
{
|
||||
if (id in courses)
|
||||
{
|
||||
courses[id].updateData(data);
|
||||
if (!courses[id].updateData(data))
|
||||
{
|
||||
console.info(`Course ${id} is finished.`);
|
||||
delete courses[id];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
courses[id] = new Course(data);
|
||||
const newCourse = new Course(data);
|
||||
|
||||
if (!courses[id].updateData(data))
|
||||
if (!newCourse.updateData(data))
|
||||
{
|
||||
console.info(`Ignoring course ${id} which is outdated.`);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.info(`Course ${id} starting.`);
|
||||
courses[id] = newCourse;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue