summaryrefslogtreecommitdiff
path: root/controller.lua
diff options
context:
space:
mode:
Diffstat (limited to 'controller.lua')
-rw-r--r--controller.lua15
1 files changed, 15 insertions, 0 deletions
diff --git a/controller.lua b/controller.lua
index 365cf73..2921f81 100644
--- a/controller.lua
+++ b/controller.lua
@@ -444,6 +444,9 @@ function celevator.controller.finish(pos,mem,changedinterrupts)
celevator.drives[drivetype].pibeep(drivepos)
end
end
+ if type(mem.drive.status) == "table" then
+ meta:set_string("vel",tostring(mem.drive.status.vel))
+ end
end
local node = celevator.get_node(pos)
local oldmem = minetest.deserialize(meta:get_string("mem")) or {}
@@ -451,6 +454,12 @@ function celevator.controller.finish(pos,mem,changedinterrupts)
local olddownbuttonlights = oldmem.dncalls or {}
local newupbuttonlights = mem.upcalls or {}
local newdownbuttonlights = mem.dncalls or {}
+ if mem.params and mem.params.groupmode == "group" then
+ oldupbuttonlights = oldmem.swingupcalls
+ olddownbuttonlights = oldmem.swingdncalls
+ newupbuttonlights = mem.swingupcalls
+ newdownbuttonlights = mem.swingdncalls
+ end
local callbuttons = carinfo.callbuttons
for _,button in pairs(callbuttons) do
if oldupbuttonlights[button.landing] ~= newupbuttonlights[button.landing] then
@@ -636,7 +645,9 @@ end
function celevator.controller.checkiqueue(dtime)
for hash,iqueue in pairs(celevator.controller.iqueue) do
local pos = minetest.get_position_from_hash(hash)
+ local noneleft = true
for iid,time in pairs(iqueue) do
+ noneleft = false
iqueue[iid] = time-dtime
if iqueue[iid] < 0 then
iqueue[iid] = nil
@@ -646,6 +657,10 @@ function celevator.controller.checkiqueue(dtime)
celevator.controller.run(pos,event)
end
end
+ if noneleft then
+ celevator.controller.iqueue[hash] = nil
+ celevator.storage:set_string("controller_iqueue",minetest.serialize(celevator.controller.iqueue))
+ end
end
end