diff options
Diffstat (limited to 'controller.lua')
-rw-r--r-- | controller.lua | 15 |
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 |