local min, max, huge = math.min, math.max, math.huge return function(counters) if counters["@sleep:60"] > 0 then local acc = huge acc = min(acc, counters["@sleep:60"]) counters["@sleep:60"] = max(counters["@sleep:60"] - acc, 0) counters["@sleep"] = counters["@sleep"] + acc * 60 return true elseif counters["@pixel r:255"] > 0 then local acc = huge acc = min(acc, counters["@pixel r:255"]) counters["@pixel r:255"] = max(counters["@pixel r:255"] - acc, 0) counters["@pixel r"] = counters["@pixel r"] + acc * 255 return true elseif counters["@pixel g:255"] > 0 then local acc = huge acc = min(acc, counters["@pixel g:255"]) counters["@pixel g:255"] = max(counters["@pixel g:255"] - acc, 0) counters["@pixel g"] = counters["@pixel g"] + acc * 255 return true elseif counters["@pixel b:255"] > 0 then local acc = huge acc = min(acc, counters["@pixel b:255"]) counters["@pixel b:255"] = max(counters["@pixel b:255"] - acc, 0) counters["@pixel b"] = counters["@pixel b"] + acc * 255 return true elseif counters["clear old mouse x:1000000"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse x:1000000"]) counters["clear old mouse x:1000000"] = max(counters["clear old mouse x:1000000"] - acc, 0) counters["clear old mouse x"] = counters["clear old mouse x"] + acc * 1000000 return true elseif counters["clear old mouse y:1000000"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse y:1000000"]) counters["clear old mouse y:1000000"] = max(counters["clear old mouse y:1000000"] - acc, 0) counters["clear old mouse y"] = counters["clear old mouse y"] + acc * 1000000 return true elseif counters["current mouse x -> old mouse x:1000000"] > 0 then local acc = huge acc = min(acc, counters["current mouse x -> old mouse x:1000000"]) counters["current mouse x -> old mouse x:1000000"] = max(counters["current mouse x -> old mouse x:1000000"] - acc, 0) counters["current mouse x -> old mouse x"] = counters["current mouse x -> old mouse x"] + acc * 1000000 return true elseif counters["current mouse y -> old mouse y:1000000"] > 0 then local acc = huge acc = min(acc, counters["current mouse y -> old mouse y:1000000"]) counters["current mouse y -> old mouse y:1000000"] = max(counters["current mouse y -> old mouse y:1000000"] - acc, 0) counters["current mouse y -> old mouse y"] = counters["current mouse y -> old mouse y"] + acc * 1000000 return true elseif counters["@mouse x -> current mouse x:1000000"] > 0 then local acc = huge acc = min(acc, counters["@mouse x -> current mouse x:1000000"]) counters["@mouse x -> current mouse x:1000000"] = max(counters["@mouse x -> current mouse x:1000000"] - acc, 0) counters["@mouse x -> current mouse x"] = counters["@mouse x -> current mouse x"] + acc * 1000000 return true elseif counters["@mouse y -> current mouse y:1000000"] > 0 then local acc = huge acc = min(acc, counters["@mouse y -> current mouse y:1000000"]) counters["@mouse y -> current mouse y:1000000"] = max(counters["@mouse y -> current mouse y:1000000"] - acc, 0) counters["@mouse y -> current mouse y"] = counters["@mouse y -> current mouse y"] + acc * 1000000 return true elseif counters["copy old mouse x -> @line x1:1000000"] > 0 then local acc = huge acc = min(acc, counters["copy old mouse x -> @line x1:1000000"]) counters["copy old mouse x -> @line x1:1000000"] = max(counters["copy old mouse x -> @line x1:1000000"] - acc, 0) counters["copy old mouse x -> @line x1"] = counters["copy old mouse x -> @line x1"] + acc * 1000000 return true elseif counters["copy old mouse y -> @line y1:1000000"] > 0 then local acc = huge acc = min(acc, counters["copy old mouse y -> @line y1:1000000"]) counters["copy old mouse y -> @line y1:1000000"] = max(counters["copy old mouse y -> @line y1:1000000"] - acc, 0) counters["copy old mouse y -> @line y1"] = counters["copy old mouse y -> @line y1"] + acc * 1000000 return true elseif counters["copy current mouse x -> @line x2:1000000"] > 0 then local acc = huge acc = min(acc, counters["copy current mouse x -> @line x2:1000000"]) counters["copy current mouse x -> @line x2:1000000"] = max(counters["copy current mouse x -> @line x2:1000000"] - acc, 0) counters["copy current mouse x -> @line x2"] = counters["copy current mouse x -> @line x2"] + acc * 1000000 return true elseif counters["copy current mouse y -> @line y2:1000000"] > 0 then local acc = huge acc = min(acc, counters["copy current mouse y -> @line y2:1000000"]) counters["copy current mouse y -> @line y2:1000000"] = max(counters["copy current mouse y -> @line y2:1000000"] - acc, 0) counters["copy current mouse y -> @line y2"] = counters["copy current mouse y -> @line y2"] + acc * 1000000 return true elseif counters["clear old mouse x"] > 0 and counters["old mouse x"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse x"]) acc = min(acc, counters["old mouse x"]) counters["clear old mouse x"] = max(counters["clear old mouse x"] - acc, 0) counters["old mouse x"] = max(counters["old mouse x"] - acc, 0) return true elseif counters["clear old mouse x"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse x"]) counters["clear old mouse x"] = max(counters["clear old mouse x"] - acc, 0) return true elseif counters["clear old mouse y"] > 0 and counters["old mouse y"] > 0 then local acc = huge acc = min(acc, counters["old mouse y"]) acc = min(acc, counters["clear old mouse y"]) counters["clear old mouse y"] = max(counters["clear old mouse y"] - acc, 0) counters["old mouse y"] = max(counters["old mouse y"] - acc, 0) return true elseif counters["clear old mouse y"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse y"]) counters["clear old mouse y"] = max(counters["clear old mouse y"] - acc, 0) return true elseif counters["current mouse x -> old mouse x"] > 0 and counters["current mouse x"] > 0 then local acc = huge acc = min(acc, counters["current mouse x -> old mouse x"]) acc = min(acc, counters["current mouse x"]) counters["current mouse x -> old mouse x"] = max(counters["current mouse x -> old mouse x"] - acc, 0) counters["current mouse x"] = max(counters["current mouse x"] - acc, 0) counters["old mouse x"] = counters["old mouse x"] + acc * 1 return true elseif counters["current mouse y -> old mouse y"] > 0 and counters["current mouse y"] > 0 then local acc = huge acc = min(acc, counters["current mouse y"]) acc = min(acc, counters["current mouse y -> old mouse y"]) counters["current mouse y -> old mouse y"] = max(counters["current mouse y -> old mouse y"] - acc, 0) counters["current mouse y"] = max(counters["current mouse y"] - acc, 0) counters["old mouse y"] = counters["old mouse y"] + acc * 1 return true elseif counters["current mouse x -> old mouse x"] > 0 then local acc = huge acc = min(acc, counters["current mouse x -> old mouse x"]) counters["current mouse x -> old mouse x"] = max(counters["current mouse x -> old mouse x"] - acc, 0) return true elseif counters["current mouse y -> old mouse y"] > 0 then local acc = huge acc = min(acc, counters["current mouse y -> old mouse y"]) counters["current mouse y -> old mouse y"] = max(counters["current mouse y -> old mouse y"] - acc, 0) return true elseif counters["@mouse x -> current mouse x"] > 0 and counters["@mouse x"] > 0 then local acc = huge acc = min(acc, counters["@mouse x -> current mouse x"]) acc = min(acc, counters["@mouse x"]) counters["@mouse x -> current mouse x"] = max(counters["@mouse x -> current mouse x"] - acc, 0) counters["@mouse x"] = max(counters["@mouse x"] - acc, 0) counters["current mouse x"] = counters["current mouse x"] + acc * 1 return true elseif counters["@mouse y -> current mouse y"] > 0 and counters["@mouse y"] > 0 then local acc = huge acc = min(acc, counters["@mouse y"]) acc = min(acc, counters["@mouse y -> current mouse y"]) counters["@mouse y -> current mouse y"] = max(counters["@mouse y -> current mouse y"] - acc, 0) counters["@mouse y"] = max(counters["@mouse y"] - acc, 0) counters["current mouse y"] = counters["current mouse y"] + acc * 1 return true elseif counters["@mouse x -> current mouse x"] > 0 then local acc = huge acc = min(acc, counters["@mouse x -> current mouse x"]) counters["@mouse x -> current mouse x"] = max(counters["@mouse x -> current mouse x"] - acc, 0) return true elseif counters["@mouse y -> current mouse y"] > 0 then local acc = huge acc = min(acc, counters["@mouse y -> current mouse y"]) counters["@mouse y -> current mouse y"] = max(counters["@mouse y -> current mouse y"] - acc, 0) return true elseif counters["copy old mouse x -> @line x1"] > 0 and counters["old mouse x"] > 0 then local acc = huge acc = min(acc, counters["copy old mouse x -> @line x1"]) acc = min(acc, counters["old mouse x"]) counters["copy old mouse x -> @line x1"] = max(counters["copy old mouse x -> @line x1"] - acc, 0) counters["old mouse x"] = max(counters["old mouse x"] - acc, 0) counters["used old mouse x"] = counters["used old mouse x"] + acc * 1 counters["@line x1"] = counters["@line x1"] + acc * 1 return true elseif counters["copy old mouse y -> @line y1"] > 0 and counters["old mouse y"] > 0 then local acc = huge acc = min(acc, counters["old mouse y"]) acc = min(acc, counters["copy old mouse y -> @line y1"]) counters["copy old mouse y -> @line y1"] = max(counters["copy old mouse y -> @line y1"] - acc, 0) counters["old mouse y"] = max(counters["old mouse y"] - acc, 0) counters["@line y1"] = counters["@line y1"] + acc * 1 counters["used old mouse y"] = counters["used old mouse y"] + acc * 1 return true elseif counters["copy current mouse x -> @line x2"] > 0 and counters["current mouse x"] > 0 then local acc = huge acc = min(acc, counters["copy current mouse x -> @line x2"]) acc = min(acc, counters["current mouse x"]) counters["copy current mouse x -> @line x2"] = max(counters["copy current mouse x -> @line x2"] - acc, 0) counters["current mouse x"] = max(counters["current mouse x"] - acc, 0) counters["used current mouse x"] = counters["used current mouse x"] + acc * 1 counters["@line x2"] = counters["@line x2"] + acc * 1 return true elseif counters["copy current mouse y -> @line y2"] > 0 and counters["current mouse y"] > 0 then local acc = huge acc = min(acc, counters["current mouse y"]) acc = min(acc, counters["copy current mouse y -> @line y2"]) counters["copy current mouse y -> @line y2"] = max(counters["copy current mouse y -> @line y2"] - acc, 0) counters["current mouse y"] = max(counters["current mouse y"] - acc, 0) counters["@line y2"] = counters["@line y2"] + acc * 1 counters["used current mouse y"] = counters["used current mouse y"] + acc * 1 return true elseif counters["copy old mouse x -> @line x1"] > 0 then local acc = huge acc = min(acc, counters["copy old mouse x -> @line x1"]) counters["copy old mouse x -> @line x1"] = max(counters["copy old mouse x -> @line x1"] - acc, 0) return true elseif counters["copy old mouse y -> @line y1"] > 0 then local acc = huge acc = min(acc, counters["copy old mouse y -> @line y1"]) counters["copy old mouse y -> @line y1"] = max(counters["copy old mouse y -> @line y1"] - acc, 0) return true elseif counters["copy current mouse x -> @line x2"] > 0 then local acc = huge acc = min(acc, counters["copy current mouse x -> @line x2"]) counters["copy current mouse x -> @line x2"] = max(counters["copy current mouse x -> @line x2"] - acc, 0) return true elseif counters["copy current mouse y -> @line y2"] > 0 then local acc = huge acc = min(acc, counters["copy current mouse y -> @line y2"]) counters["copy current mouse y -> @line y2"] = max(counters["copy current mouse y -> @line y2"] - acc, 0) return true elseif counters["used old mouse x"] > 0 then local acc = huge acc = min(acc, counters["used old mouse x"]) counters["used old mouse x"] = max(counters["used old mouse x"] - acc, 0) counters["old mouse x"] = counters["old mouse x"] + acc * 1 return true elseif counters["used old mouse y"] > 0 then local acc = huge acc = min(acc, counters["used old mouse y"]) counters["used old mouse y"] = max(counters["used old mouse y"] - acc, 0) counters["old mouse y"] = counters["old mouse y"] + acc * 1 return true elseif counters["used current mouse x"] > 0 then local acc = huge acc = min(acc, counters["used current mouse x"]) counters["used current mouse x"] = max(counters["used current mouse x"] - acc, 0) counters["current mouse x"] = counters["current mouse x"] + acc * 1 return true elseif counters["used current mouse y"] > 0 then local acc = huge acc = min(acc, counters["used current mouse y"]) counters["used current mouse y"] = max(counters["used current mouse y"] - acc, 0) counters["current mouse y"] = counters["current mouse y"] + acc * 1 return true elseif counters["clear old mouse position"] > 0 then local acc = huge acc = min(acc, counters["clear old mouse position"]) counters["clear old mouse position"] = max(counters["clear old mouse position"] - acc, 0) counters["clear old mouse y:1000000"] = counters["clear old mouse y:1000000"] + acc * 1 counters["clear old mouse x:1000000"] = counters["clear old mouse x:1000000"] + acc * 1 return true elseif counters["move current mouse position to old mouse position"] > 0 then local acc = huge acc = min(acc, counters["move current mouse position to old mouse position"]) counters["move current mouse position to old mouse position"] = max(counters["move current mouse position to old mouse position"] - acc, 0) counters["current mouse x -> old mouse x:1000000"] = counters["current mouse x -> old mouse x:1000000"] + acc * 1 counters["current mouse y -> old mouse y:1000000"] = counters["current mouse y -> old mouse y:1000000"] + acc * 1 return true elseif counters["move @mouse position to current mouse position"] > 0 then local acc = huge acc = min(acc, counters["move @mouse position to current mouse position"]) counters["move @mouse position to current mouse position"] = max(counters["move @mouse position to current mouse position"] - acc, 0) counters["@mouse y -> current mouse y:1000000"] = counters["@mouse y -> current mouse y:1000000"] + acc * 1 counters["@mouse x -> current mouse x:1000000"] = counters["@mouse x -> current mouse x:1000000"] + acc * 1 return true elseif counters["update mouse position"] > 0 then local acc = huge acc = min(acc, counters["update mouse position"]) counters["update mouse position"] = max(counters["update mouse position"] - acc, 0) counters["move @mouse position to current mouse position"] = counters["move @mouse position to current mouse position"] + acc * 1 counters["@mouse position"] = counters["@mouse position"] + acc * 1 counters["clear old mouse position"] = counters["clear old mouse position"] + acc * 1 counters["move current mouse position to old mouse position"] = counters["move current mouse position to old mouse position"] + acc * 1 return true elseif counters["check if mouse button is down"] > 0 then local acc = huge acc = min(acc, counters["check if mouse button is down"]) counters["check if mouse button is down"] = max(counters["check if mouse button is down"] - acc, 0) counters["@mouse is down"] = counters["@mouse is down"] + acc * 1 counters["@mouse button"] = counters["@mouse button"] + acc * 1 return true elseif counters["set line to white"] > 0 then local acc = huge acc = min(acc, counters["set line to white"]) counters["set line to white"] = max(counters["set line to white"] - acc, 0) counters["@pixel b:255"] = counters["@pixel b:255"] + acc * 1 counters["@pixel r:255"] = counters["@pixel r:255"] + acc * 1 counters["@pixel g:255"] = counters["@pixel g:255"] + acc * 1 return true elseif counters["set line position"] > 0 then local acc = huge acc = min(acc, counters["set line position"]) counters["set line position"] = max(counters["set line position"] - acc, 0) counters["copy current mouse x -> @line x2:1000000"] = counters["copy current mouse x -> @line x2:1000000"] + acc * 1 counters["copy current mouse y -> @line y2:1000000"] = counters["copy current mouse y -> @line y2:1000000"] + acc * 1 counters["copy old mouse x -> @line x1:1000000"] = counters["copy old mouse x -> @line x1:1000000"] + acc * 1 counters["copy old mouse y -> @line y1:1000000"] = counters["copy old mouse y -> @line y1:1000000"] + acc * 1 return true elseif counters["draw the line"] > 0 then local acc = huge acc = min(acc, counters["draw the line"]) counters["draw the line"] = max(counters["draw the line"] - acc, 0) counters["@draw line"] = counters["@draw line"] + acc * 1 return true elseif counters["draw a line"] > 0 and counters["@mouse button is down"] > 0 then local acc = huge acc = min(acc, counters["@mouse button is down"]) acc = min(acc, counters["draw a line"]) counters["draw a line"] = max(counters["draw a line"] - acc, 0) counters["@mouse button is down"] = max(counters["@mouse button is down"] - acc, 0) counters["set line position"] = counters["set line position"] + acc * 1 counters["draw the line"] = counters["draw the line"] + acc * 1 counters["set line to white"] = counters["set line to white"] + acc * 1 return true elseif counters["draw a line"] > 0 then local acc = huge acc = min(acc, counters["draw a line"]) counters["draw a line"] = max(counters["draw a line"] - acc, 0) return true elseif counters["update"] > 0 then local acc = huge acc = min(acc, counters["update"]) counters["update"] = max(counters["update"] - acc, 0) counters["check if mouse button is down"] = counters["check if mouse button is down"] + acc * 1 counters["draw a line"] = counters["draw a line"] + acc * 1 counters["update mouse position"] = counters["update mouse position"] + acc * 1 return true elseif counters["poll inputs"] > 0 then local acc = huge acc = min(acc, counters["poll inputs"]) counters["poll inputs"] = max(counters["poll inputs"] - acc, 0) counters["@poll inputs"] = counters["@poll inputs"] + acc * 1 return true elseif counters["draw"] > 0 then local acc = huge acc = min(acc, counters["draw"]) counters["draw"] = max(counters["draw"] - acc, 0) counters["@display"] = counters["@display"] + acc * 1 return true elseif counters["sleep"] > 0 then local acc = huge acc = min(acc, counters["sleep"]) counters["sleep"] = max(counters["sleep"] - acc, 0) counters["@sleep:16"] = counters["@sleep:16"] + acc * 1 return true elseif counters["main loop"] > 0 then local acc = huge acc = min(acc, counters["main loop"]) counters["main loop"] = max(counters["main loop"] - acc, 0) counters["poll inputs"] = counters["poll inputs"] + acc * 1 counters["draw"] = counters["draw"] + acc * 1 counters["sleep"] = counters["sleep"] + acc * 1 counters["update"] = counters["update"] + acc * 1 counters["main loop"] = counters["main loop"] + acc * 1 return true end return false end