new flow logic: abms.lua: implement non-finite mode cleanupfn invocation in run_output()

This commit is contained in:
thetaepsilon-gamedev 2017-10-07 22:35:08 +01:00
parent d4346919bc
commit f94c93bb59

View File

@ -224,11 +224,16 @@ flowlogic.run_output = function(pos, node, currentpressure, oldpressure, outputd
local upper = outputdef.upper
local lower = outputdef.lower
local result = currentpressure
if currentpressure > lower then
local threshold = nil
if finitemode then threshold = lower else threshold = upper end
if currentpressure > threshold then
local takenpressure = outputdef.outputfn(pos, node, currentpressure, finitemode)
local newpressure = currentpressure - takenpressure
if newpressure < 0 then newpressure = 0 end
result = newpressure
end
if (not finitemode) and (currentpressure < lower) and (oldpressure > lower) then
outputdef.cleanupfn(pos, node, currentpressure)
end
return result
end