aboutsummaryrefslogtreecommitdiff
path: root/actionqueue.lua
diff options
context:
space:
mode:
authorNatureFreshMilk <naturefreshmilk@github.com>2019-09-09 15:23:06 +0200
committerNatureFreshMilk <naturefreshmilk@github.com>2019-09-09 15:23:06 +0200
commitf9f5339e71b4768cc035b58da7b785d294fe1beb (patch)
tree28a25bbf92777b579a2c509f783bf937a71a3559 /actionqueue.lua
parent0941f6726b67669173c524302cf006c365895179 (diff)
downloadmesecons_debug-f9f5339e71b4768cc035b58da7b785d294fe1beb.tar.gz
mesecons_debug-f9f5339e71b4768cc035b58da7b785d294fe1beb.zip
remove hacky overrides
Diffstat (limited to 'actionqueue.lua')
-rw-r--r--actionqueue.lua74
1 files changed, 0 insertions, 74 deletions
diff --git a/actionqueue.lua b/actionqueue.lua
deleted file mode 100644
index 3f1862f..0000000
--- a/actionqueue.lua
+++ /dev/null
@@ -1,74 +0,0 @@
--- smarter mesecons actionqueue
--- TODO: create PR if ot works properly
-
-
--- execute the stored functions on a globalstep
--- if however, the pos of a function is not loaded (get_node_or_nil == nil), do NOT execute the function
--- this makes sure that resuming mesecons circuits when restarting minetest works fine
--- However, even that does not work in some cases, that's why we delay the time the globalsteps
--- start to be execute by 5 seconds
-local get_highest_priority = function (actions)
- local highestp = -1
- local highesti
- for i, ac in ipairs(actions) do
- if ac.priority > highestp then
- highestp = ac.priority
- highesti = i
- end
- end
-
- return highesti
-end
-
-local m_time = 0
-local resumetime = mesecon.setting("resumetime", 4)
-minetest.register_globalstep(function (dtime)
- m_time = m_time + dtime
- -- don't even try if server has not been running for XY seconds; resumetime = time to wait
- -- after starting the server before processing the ActionQueue, don't set this too low
- if (m_time < resumetime) then return end
-
- if not mesecons_debug.enabled then
- return
- end
-
- local actions = mesecon.tablecopy(mesecon.queue.actions)
- local actions_now={}
-
- mesecon.queue.actions = {}
-
- -- sort actions into two categories:
- -- those toexecute now (actions_now) and those to execute later (mesecon.queue.actions)
- for _, ac in ipairs(actions) do
- if ac.time > 0 then
- ac.time = ac.time - dtime -- executed later
- table.insert(mesecon.queue.actions, ac)
- else
- table.insert(actions_now, ac)
- end
- end
-
- if #actions_now > 30000 then
- -- too much actions, purge them
- return
- end
-
- local t0 = minetest.get_us_time()
-
- while(#actions_now > 0) do -- execute highest priorities first, until all are executed
- local hp = get_highest_priority(actions_now)
- local action = actions_now[hp]
-
- local t1 = minetest.get_us_time()
- local diff = t1 - t0
- if diff > 75000 then
- -- execute remaining actions in next globalstep
- table.insert(mesecon.queue.actions, 1, action)
- else
- mesecon.queue:execute(action)
- table.remove(actions_now, hp)
- end
-
- end
-end)
-