|
445 | 445 | --- State changes |
446 | 446 | ----------------------------------------------------------------------------------------------------------------------- |
447 | 447 | function AIDriveStrategyFieldWorkCourse:finishFieldWork() |
448 | | - if self.settings.returnToStart:getValue() and self.fieldWorkCourse:startsWithHeadland() then |
| 448 | + if (self.settings.returnToStart:getValue() and self.fieldWorkCourse:startsWithHeadland()) or |
| 449 | + self.settings.restartCourseAtEnd:getValue() then |
449 | 450 | self:debug('Fieldwork ended, returning to first waypoint.') |
450 | 451 | self.vehicle:prepareForAIDriving() |
451 | 452 | self:returnToStartAfterDone() |
@@ -530,9 +531,15 @@ function AIDriveStrategyFieldWorkCourse:onPathfindingDoneToReturnToStart(path) |
530 | 531 | self:debug('Pathfinding to return to start finished with %d waypoints (%d ms)', |
531 | 532 | #path, g_currentMission.time - (self.pathfindingStartedAt or 0)) |
532 | 533 | local returnCourse = Course(self.vehicle, CpMathUtil.pointsToGameInPlace(path), true) |
533 | | - self.state = self.states.RETURNING_TO_START |
534 | | - self.waitingForPrepare:set(true, 10000) |
535 | | - self:startCourse(returnCourse, 1) |
| 534 | + if self.settings.restartCourseAtEnd:getValue() then |
| 535 | + self:debug('Returning to the first waypoint and then restarting the fieldwork course') |
| 536 | + self:startAlignmentTurn(self.fieldWorkCourse, 1, returnCourse) |
| 537 | + else |
| 538 | + self:debug('Returning to the first waypoint and stopping there') |
| 539 | + self.state = self.states.RETURNING_TO_START |
| 540 | + self.waitingForPrepare:set(true, 10000) |
| 541 | + self:startCourse(returnCourse, 1) |
| 542 | + end |
536 | 543 | else |
537 | 544 | self:debug('No path found to return to fieldwork start after work is done (%d ms), stopping job', |
538 | 545 | g_currentMission.time - (self.pathfindingStartedAt or 0)) |
|
0 commit comments