fix: Start run starter via AD's mode:start(USER_PLAYER) som HUD'en — startAutoDrive alene lod traktoren stå (v1.9.6.0)
This commit is contained in:
@@ -320,11 +320,29 @@ end
|
||||
-- Anvend run-tilstand OG start traktoren i ét pcall'et kald: kaster vehicle:startAutoDrive()
|
||||
-- (fx AD's egen validering), skal den ene traktor fejle uden at hele startRun-loopet
|
||||
-- afbrydes — ellers når de øvrige tildelte traktorer aldrig at blive startet.
|
||||
-- Start præcis som AD's HUD (ADInputManager:input_start_stop): det er MODE'ens start(),
|
||||
-- der opretter køreopgaverne og selv kalder startAutoDrive — startAutoDrive alene sætter
|
||||
-- kun "aktiv", og traktoren bliver holdende.
|
||||
local function applyAndStart(adEnv, run, vehicle, ingredients)
|
||||
applyRunToVehicle(adEnv, run, vehicle, ingredients)
|
||||
if not isVehicleActive(vehicle) then
|
||||
if isVehicleActive(vehicle) then
|
||||
return
|
||||
end
|
||||
local stateModule = vehicle.ad.stateModule
|
||||
local farmId = ADSmartPickup.getFarmId(vehicle)
|
||||
if stateModule.setActualFarmId ~= nil and farmId ~= nil then
|
||||
stateModule:setActualFarmId(farmId)
|
||||
end
|
||||
stateModule:setLoopsDone(0)
|
||||
local mode = stateModule.getCurrentMode ~= nil and stateModule:getCurrentMode() or nil
|
||||
if mode ~= nil and mode.start ~= nil then
|
||||
mode:start(adEnv.AutoDrive.USER_PLAYER or 1)
|
||||
else
|
||||
vehicle:startAutoDrive()
|
||||
end
|
||||
if vehicle.isServer and SpecializationUtil ~= nil and SpecializationUtil.raiseEvent ~= nil then
|
||||
SpecializationUtil.raiseEvent(vehicle, "onUpdate", 16, false, false, false)
|
||||
end
|
||||
end
|
||||
|
||||
-- Pr. tildelt traktor: validér, skriv AD-tilstand, start. ✖-traktorer springes over.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<modDesc descVersion="107">
|
||||
<author>masterdraco</author>
|
||||
<version>1.9.5.0</version>
|
||||
<version>1.9.6.0</version>
|
||||
<title>
|
||||
<en>AD Smart Pickup</en>
|
||||
</title>
|
||||
|
||||
@@ -310,5 +310,21 @@ check("C10 sorteret på titel", accepted[1].title .. "," .. accepted[2].title ..
|
||||
check("C10 navn med", accepted[1].name, "STRAW")
|
||||
check("C10 label", ADRunsController.getVehicleLabel(adEnv, labelB), "Fastrac B (#2)")
|
||||
|
||||
-- C14: Start går gennem AD's mode:start(USER_PLAYER) (som HUD'en), ikke kun startAutoDrive
|
||||
buildWorld()
|
||||
local modeVehicle = makeVehicle("vehicleM", "Mode-traktor", {STRAW, TMR}, 1000000, 100, 0)
|
||||
local modeStarts = {}
|
||||
modeVehicle.ad.stateModule.getCurrentMode = function() return {start = function(_, user) table.insert(modeStarts, user); modeVehicle:startAutoDrive() end} end
|
||||
modeVehicle.ad.stateModule.setActualFarmId = function(self, farmId) self.actualFarmId = farmId end
|
||||
adEnv.AutoDrive.USER_PLAYER = 1
|
||||
local modeRun = ADRunsController.createRun("Mode")
|
||||
ADRunsController.updateRun(modeRun.id, {targetWayPointId = 94})
|
||||
ADRunsController.assignVehicle(modeRun.id, modeVehicle)
|
||||
ADRunsController.startRun(adEnv, modeRun.id)
|
||||
check("C14 mode:start kaldt med USER_PLAYER", modeStarts[1], 1)
|
||||
check("C14 traktor aktiv", modeVehicle.started, 1)
|
||||
check("C14 farm-id sat", modeVehicle.ad.stateModule.actualFarmId, 1)
|
||||
check("C14 loopsDone nulstillet", modeVehicle.ad.stateModule.loopsDone, 0)
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user