fix: Fields under Stop alt-pause vises stoppet med [Start], [Start] genoptager kun den mark; listen skjules bag redigeringsvinduet (tekst skinnede igennem) (v1.59.3.0)
This commit is contained in:
@@ -291,6 +291,16 @@ function ADFieldJobs.awaitingPlayer(fieldId)
|
||||
return nil
|
||||
end
|
||||
|
||||
-- Under global pause: kun denne mark genoptages (de andre venter på Start alle). nil = pause igen.
|
||||
function ADFieldJobs.setFieldResumed(id, isOn)
|
||||
ADFieldJobs.state.resumed = ADFieldJobs.state.resumed or {}
|
||||
ADFieldJobs.state.resumed[id] = isOn ~= false or nil
|
||||
end
|
||||
|
||||
function ADFieldJobs.isFieldResumed(id)
|
||||
return (ADFieldJobs.state.resumed or {})[id] == true
|
||||
end
|
||||
|
||||
function ADFieldJobs.requestStart(id)
|
||||
ADFieldJobs.note(id, {startRequested = true})
|
||||
end
|
||||
@@ -313,6 +323,7 @@ end
|
||||
-- Pause (Stop alt og parkér): intet nyt sendes ud, ingen genstart efter indlæsning. Gemmes.
|
||||
function ADFieldJobs.setPaused(value)
|
||||
ADFieldJobs.state.paused = value == true
|
||||
ADFieldJobs.state.resumed = {}
|
||||
ADFieldJobs.save()
|
||||
Logging.info(ADFieldJobs.LOG_PREFIX .. "markarbejde %s", value and "på pause" or "genoptaget")
|
||||
end
|
||||
@@ -492,9 +503,11 @@ function ADFieldJobs.tick(adEnv, dt)
|
||||
-- lidt efter start, og indtil da ligner de maskiner ledige (in-game 26/9: kultivatoren blev taget midt
|
||||
-- i spillerens eget CP-job 45 s efter indlæsning)
|
||||
if ADFieldJobs.now < ADFieldJobs.STARTUP_GRACE_MS then return end
|
||||
-- Stop alt og parkér: intet sendes ud og intet genstartes, før spilleren trykker Start alle
|
||||
if ADFieldJobs.state.paused then return end
|
||||
if not ADFieldJobs.resumedAfterLoad then
|
||||
-- Stop alt og parkér: intet sendes ud og intet genstartes, før spilleren trykker Start alle — undtagen
|
||||
-- marker spilleren har genoptaget enkeltvis ([Start] i Fields-listen, ADFieldJobs.setFieldResumed)
|
||||
local paused, resumed = ADFieldJobs.state.paused, ADFieldJobs.state.resumed or {}
|
||||
if paused and next(resumed) == nil then return end
|
||||
if not paused and not ADFieldJobs.resumedAfterLoad then
|
||||
-- én gang, før noget nyt sendes ud: CP-maskiner der var midt i et job, fortsætter (og tæller som aktive)
|
||||
ADFieldJobs.resumedAfterLoad = true
|
||||
local okResume, errResume = pcall(ADFieldWork.resumeAfterLoad, adEnv)
|
||||
@@ -507,7 +520,7 @@ function ADFieldJobs.tick(adEnv, dt)
|
||||
if ADPool ~= nil then infos = ADPool.queueOrder(infos, ADFieldJobs.waitingSince) end
|
||||
for index, info in ipairs(infos) do
|
||||
-- passive marker (der sker intet uden brugeren) vurderes kun i deres tiendedel af sekunderne
|
||||
if not ADFieldModel.isPassive(ADFieldJobs.getField(info.id)) or index % ADFieldJobs.PASSIVE_SLICES == slice then
|
||||
if (not paused or resumed[info.id]) and (not ADFieldModel.isPassive(ADFieldJobs.getField(info.id)) or index % ADFieldJobs.PASSIVE_SLICES == slice) then
|
||||
stepped = stepped + 1
|
||||
local ok, err = pcall(stepField, adEnv, info, env)
|
||||
if not ok then Logging.warning(ADFieldJobs.LOG_PREFIX .. "F%s fejl: %s", tostring(info.id), tostring(err)) end
|
||||
|
||||
Reference in New Issue
Block a user