diff --git a/AIDriver.lua b/AIDriver.lua index 370e9f958..91d461858 100644 --- a/AIDriver.lua +++ b/AIDriver.lua @@ -293,6 +293,14 @@ function AIDriver:driveCourse(dt) self:hold() end + if not self:getIsEngineReady() then + if self:getSpeed() > 0 and self.allowedToDrive then + self:startEngineIfNeeded() + self:hold() + self:debugSparse('Wait for the engine to start') + end + end + -- use the recorded speed by default if not self:hasTipTrigger() then self:setSpeed(self:getRecordedSpeed()) @@ -311,10 +319,6 @@ function AIDriver:driveCourse(dt) self:stopEngineIfNotNeeded() - if self:getSpeed() > 0 and self.allowedToDrive then - self:startEngineIfNeeded() - end - if isReverseActive then -- we go wherever goReverse() told us to go self:driveVehicleInDirection(dt, self.allowedToDrive, moveForwards, lx, lz, self:getSpeed()) @@ -1149,14 +1153,20 @@ function AIDriver:getClosestPointOnFieldBoundary(x, z, fieldNum) end function AIDriver:startEngineIfNeeded() - if self.vehicle.spec_motorized and not self.vehicle.spec_motorized.isMotorStarted then + if self.vehicle.spec_motorized and not self.vehicle.spec_motorized:getIsMotorStarted() then self.vehicle:startMotor() end - -- reset motor auto stop timer when someone starts the engine so we won't stop it for while just because + -- reset motor auto stop timer when someone starts the engine so we won't stop it for a while just because -- our speed is 0 (for example while waiting for the implements to lower) self.lastMovingTime = self.vehicle.timer end +function AIDriver:getIsEngineReady() + local spec = self.vehicle.spec_motorized + return spec and (spec:getIsMotorStarted() and spec:getMotorStartTime() < g_currentMission.time) +end; + + --- Is auto stop engine enabled? function AIDriver:isEngineAutoStopEnabled() return self.vehicle.cp.saveFuelOptionActive diff --git a/FieldworkAIDriver.lua b/FieldworkAIDriver.lua index e0c38dab1..75dd0e09e 100644 --- a/FieldworkAIDriver.lua +++ b/FieldworkAIDriver.lua @@ -228,7 +228,6 @@ function FieldworkAIDriver:driveFieldwork() self:calculateLoweringDuration() else self:debugSparse('waiting for all tools to lower') - self:startLoweringDurationTimer() self:setSpeed(0) self:checkFillLevels() end @@ -694,13 +693,10 @@ function FieldworkAIDriver:updateLightsOnField() end function FieldworkAIDriver:startLoweringDurationTimer() - -- if not started yet - if not self.startedLoweringAt then - -- then start but only after everything is unfolded as we don't want to include the - -- unfold duration (since we don't fold at the end of the row). - if self:isAllUnfolded() then - self.startedLoweringAt = self.vehicle.timer - end + -- then start but only after everything is unfolded as we don't want to include the + -- unfold duration (since we don't fold at the end of the row). + if self:isAllUnfolded() then + self.startedLoweringAt = self.vehicle.timer end end @@ -786,6 +782,7 @@ function FieldworkAIDriver:lowerImplements() implement.object:aiImplementStartLine() end self.vehicle:raiseStateChange(Vehicle.STATE_CHANGE_AI_START_LINE) + self:startLoweringDurationTimer() end function FieldworkAIDriver:raiseImplements() diff --git a/modDesc.xml b/modDesc.xml index d099112be..42e03296a 100644 --- a/modDesc.xml +++ b/modDesc.xml @@ -1,6 +1,6 @@ - 6.01.00163 + 6.01.00164.1 <br>CoursePlay SIX</br> diff --git a/turn.lua b/turn.lua index da5daf1e6..43501398e 100644 --- a/turn.lua +++ b/turn.lua @@ -803,7 +803,9 @@ function courseplay:turn(vehicle, dt) directionForce = -vehicle.cp.mrAccelrator -- The progressive breaking function returns a postive number which accelerates the tractor end end - allowedToDrive = vehicle.cp.driver and not vehicle.cp.driver:holdInTurnManeuver(vehicle.cp.turnStage == 0) and allowedToDrive + -- hold while straw swatch is active (not during headland turn maneuvers though) + local holdInTurn = not vehicle.cp.headlandTurn and vehicle.cp.driver and vehicle.cp.driver:holdInTurnManeuver(vehicle.cp.turnStage == 0) + allowedToDrive = not holdInTurn and allowedToDrive --courseplay.debugVehicle(14, vehicle, 'turn speed = %.1f, allowedToDrive %s', refSpeed, allowedToDrive) --vehicle,dt,steeringAngleLimit,acceleration,slowAcceleration,slowAngleLimit,allowedToDrive,moveForwards,lx,lz,maxSpeed,slowDownFactor,angle