fix(kæde): spillerens slukninger huskes, pause beskytter kun sin egen kæde, stoppede flows slippes og forældede nøgler glemmes
This commit is contained in:
@@ -85,16 +85,11 @@ local function setProduction(data, key, isOn)
|
||||
return ok
|
||||
end
|
||||
|
||||
-- Spillerens slukninger er allerede lagt i state.userOff (ADChain.reconcile før planen): de tændes ikke igen.
|
||||
-- Delvise data: intet slukkes (en rod der ikke kunne læses, ligner en rod der er slået fra).
|
||||
function ADChainRun.toggleProductions(data, prod, needRecipes)
|
||||
function ADChainRun.toggleProductions(data, prod)
|
||||
local state = ADChain.state
|
||||
local byChain = state.byChain
|
||||
local overrides = ADChain.playerOverrides(data.recipes, needRecipes, state.userOff, data.partial == true)
|
||||
state.userOff = overrides.userOff
|
||||
for _, key in ipairs(overrides.added) do
|
||||
byChain[key] = nil
|
||||
log("spilleren slukkede %s — kæden tænder den ikke igen", key)
|
||||
end
|
||||
for _, key in ipairs(prod.enable or {}) do
|
||||
if not state.userOff[key] and setProduction(data, key, true) then
|
||||
byChain[key] = true
|
||||
@@ -175,7 +170,8 @@ function ADChainRun.createFlows(adEnv, data, edges)
|
||||
return count
|
||||
end
|
||||
|
||||
-- Flows for rødder der er slået fra: flyt til en anden rod der stadig bruger kanten, ellers stop (slettes ikke).
|
||||
-- Flows for rødder der er slået fra: flyt til en anden rod der stadig bruger kanten, ellers stop og slip (chain
|
||||
-- ryddes, så spilleren kan starte flowet igen uden at kæden stopper det næste minut; det slettes ikke).
|
||||
function ADChainRun.stopFlows(adEnv, chain, edges)
|
||||
local changed = 0
|
||||
local active = ADChain.activeRoots(chain, ADChain.state.paused)
|
||||
@@ -188,7 +184,8 @@ function ADChainRun.stopFlows(adEnv, chain, edges)
|
||||
else
|
||||
local ok, err = pcall(ADRunsController.stopRun, adEnv, run.id)
|
||||
if ok then
|
||||
log("flow '%s' stoppet: kæden %s er slået fra", tostring(run.name), tostring(run.chain))
|
||||
ADRunsController.updateRun(run.id, {chain = ""})
|
||||
log("flow '%s' stoppet og sluppet af kæden: kæden %s er slået fra", tostring(run.name), tostring(run.chain))
|
||||
changed = changed + 1
|
||||
else
|
||||
warn("flow '%s' kunne ikke stoppes: %s", tostring(run.name), tostring(err))
|
||||
@@ -202,7 +199,7 @@ end
|
||||
function ADChainRun.apply(adEnv, data, result)
|
||||
local okFields, errFields = pcall(ADChainRun.switchFields, data, result.actions)
|
||||
if not okFields then warn("markskift fejlede: %s", tostring(errFields)) end
|
||||
local okProd, errProd = pcall(ADChainRun.toggleProductions, data, result.prod, result.chain.needRecipes)
|
||||
local okProd, errProd = pcall(ADChainRun.toggleProductions, data, result.prod)
|
||||
if not okProd then warn("mellemled fejlede: %s", tostring(errProd)) end
|
||||
local okNew, created = pcall(ADChainRun.createFlows, adEnv, data, result.edges)
|
||||
if not okNew then warn("nye flows fejlede: %s", tostring(created)) end
|
||||
|
||||
Reference in New Issue
Block a user