@@ -4,10 +4,11 @@ WorkStartHandler = CpObject()
44
55--- @param vehicle table
66--- @param driveStrategy AIDriveStrategyFieldWorkCourse
7- function WorkStartHandler :init (vehicle , driveStrategy )
7+ function WorkStartHandler :init (vehicle , driveStrategy , turnContext )
88 self .logger = Logger (' WorkStartHandler' , Logger .level .debug , CpDebug .DBG_TURN )
99 self .vehicle = vehicle
1010 self .driveStrategy = driveStrategy
11+ self .turnContext = turnContext
1112 self .settings = vehicle :getCpSettings ()
1213 self .objectsAlreadyLowered = {}
1314 self .nObjectsAlreadyLowered = 0
4243--- same time, once all of them are beyond the work start node.
4344--- @return number distance between the work start and the implement furthest to the work start in meters ,
4445--- <0 when driving forward, nil when driving backwards
45- function WorkStartHandler :lowerImplementsAsNeeded (workStartNode , reversing , loweringCheckDistance )
46+ function WorkStartHandler :lowerImplementsAsNeeded (workStartNode , reversing )
4647 local function lowerThis (object )
4748 self .objectsAlreadyLowered [object ] = true
4849 self .nObjectsAlreadyLowered = self .nObjectsAlreadyLowered + 1
@@ -54,6 +55,10 @@ function WorkStartHandler:lowerImplementsAsNeeded(workStartNode, reversing, lowe
5455 local allShouldBeLowered , dz = true , 0
5556 for object in pairs (self .objectsToLower ) do
5657 local shouldLowerThis , thisDz = self :shouldLowerThisImplement (object , workStartNode , reversing )
58+ -- this must be called before the implement is lowered, for instance to rotate the plow before lowering it.
59+ -- ideally, this should all be in the PlowController since it is internal to the plow.
60+ self .driveStrategy :raiseControllerEvent (AIDriveStrategyCourse .onTurnEndProgressEvent ,
61+ workStartNode , reversing , shouldLowerThis , self .turnContext :isLeftTurn ())
5762 if reversing then
5863 dz = math.max (dz , thisDz )
5964 allShouldBeLowered = allShouldBeLowered and shouldLowerThis
0 commit comments