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.position = [0, 0];
|
||||||
this.angle = 0;
|
this.angle = 0;
|
||||||
|
|
||||||
|
this.history = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
get currentSegment()
|
get currentSegment()
|
||||||
|
@ -223,6 +225,7 @@ class Course
|
||||||
network.stops[this.currentStop].lon,
|
network.stops[this.currentStop].lon,
|
||||||
network.stops[this.currentStop].lat,
|
network.stops[this.currentStop].lat,
|
||||||
]);
|
]);
|
||||||
|
this.history.push(['arriveToStop', stop]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -233,6 +236,14 @@ class Course
|
||||||
*/
|
*/
|
||||||
moveToStop(stop, arrivalTime)
|
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.state = 'moving';
|
||||||
this.departureStop = this.currentStop;
|
this.departureStop = this.currentStop;
|
||||||
this.arrivalStop = stop;
|
this.arrivalStop = stop;
|
||||||
|
@ -243,15 +254,10 @@ class Course
|
||||||
network.stops[this.departureStop].lon,
|
network.stops[this.departureStop].lon,
|
||||||
network.stops[this.departureStop].lat,
|
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`);
|
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)
|
if (id in courses)
|
||||||
{
|
{
|
||||||
courses[id].updateData(data);
|
if (!courses[id].updateData(data))
|
||||||
|
{
|
||||||
|
console.info(`Course ${id} is finished.`);
|
||||||
|
delete courses[id];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
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.`);
|
console.info(`Ignoring course ${id} which is outdated.`);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.info(`Course ${id} starting.`);
|
||||||
|
courses[id] = newCourse;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue