Eventsystem Update

- changed some stuff on the core event system
This commit is contained in:
Robert Jelic
2022-10-11 20:40:43 +02:00
parent 3c550f44f7
commit 6e8f978e7c

View File

@@ -176,8 +176,8 @@ end
local stopped, moveX, moveY = nil, nil, nil local stopped, moveX, moveY = nil, nil, nil
local moveTimer = nil local moveTimer = nil
local function mouseMoveEvent(stp, x, y) local function mouseMoveEvent(_, stp, x, y)
stopped, moveX, moveY = stopped, x, y stopped, moveX, moveY = stp, x, y
if(moveTimer==nil)then if(moveTimer==nil)then
moveTimer = os.startTimer(moveThrottle/1000) moveTimer = os.startTimer(moveThrottle/1000)
end end
@@ -197,7 +197,7 @@ local function dragHandlerTimer()
activeFrame = mainFrame activeFrame = mainFrame
end end
local function mouseDragEvent(b, x, y) local function mouseDragEvent(_, b, x, y)
btn, dragX, dragY = b, x, y btn, dragX, dragY = b, x, y
if(dragThrottle<50)then if(dragThrottle<50)then
dragHandlerTimer() dragHandlerTimer()
@@ -208,74 +208,69 @@ local function mouseDragEvent(b, x, y)
end end
end end
local function basaltUpdateEvent(event, p1, p2, p3, p4) local function basaltUpdateEvent(event, ...)
if(basaltEvent:sendEvent("basaltEventCycle", event, p1, p2, p3, p4)==false)then return end local a = {...}
if(basaltEvent:sendEvent("basaltEventCycle", event, ...)==false)then return end
if(event=="terminate")then basalt.stop() end
if(mainFrame~=nil)then if(mainFrame~=nil)then
if (event == "mouse_click") then local mouseEvents = {
mainFrame:mouseHandler(p1, p2, p3, false) mouse_click = mainFrame.mouseHandler,
activeFrame = mainFrame mouse_up = mainFrame.mouseUpHandler,
elseif (event == "mouse_drag") then mouse_scroll = mainFrame.mouseScrollHandler,
mouseDragEvent(p1, p2, p3) mouse_drag = mouseDragEvent,
elseif (event == "mouse_up") then mouse_move = mouseMoveEvent,
mainFrame:mouseUpHandler(p1, p2, p3, p4) }
activeFrame = mainFrame local mouseEvent = mouseEvents[event]
elseif (event == "mouse_scroll") then if(mouseEvent~=nil)then
mainFrame:scrollHandler(p1, p2, p3, p4) mouseEvent(mainFrame, ...)
activeFrame = mainFrame drawFrames()
elseif (event == "mouse_move") then return
mouseMoveEvent(p1, p2, p3)
end end
end end
if(event == "monitor_touch") then if(event == "monitor_touch") then
if(monFrames[p1]~=nil)then if(monFrames[p1]~=nil)then
monFrames[p1]:mouseHandler(1, p2, p3, true) monFrames[p1]:mouseHandler(1, a[2], a[3], true)
activeFrame = monFrames[p1] activeFrame = monFrames[p1]
end end
if(count(monGroups)>0)then if(count(monGroups)>0)then
for k,v in pairs(monGroups)do for k,v in pairs(monGroups)do
v[1]:mouseHandler(1, p2, p3, true, p1) v[1]:mouseHandler(1, a[2], a[3], true, a[1])
end end
end end
drawFrames()
return
end end
if(activeFrame~=nil)then
local keyEvents = {
if(event == "char")then char = activeFrame.charHandler,
if(activeFrame~=nil)then key = activeFrame.keyHandler,
activeFrame:charHandler(p1) key_up = activeFrame.keyUpHandler,
end }
end local keyEvent = keyEvents[event]
if(event == "key_up")then if(keyEvent~=nil)then
if(activeFrame~=nil)then if(event == "key")then
activeFrame:keyUpHandler(p1) activeKey[a[1]] = true
end elseif(event == "key_up")then
activeKey[p1] = false activeKey[a[1]] = false
end
if(event == "key")then
if(activeFrame~=nil)then
activeFrame:keyHandler(p1, p2)
end
activeKey[p1] = true
end
if(event == "terminate")then
if(activeFrame~=nil)then
activeFrame:eventHandler(event)
if(updaterActive==false)then return end
end
end
if(event~="mouse_click")and(event~="mouse_up")and(event~="mouse_scroll")and(event~="mouse_drag")and(event~="mouse_move")and(event~="key")and(event~="key_up")and(event~="char")and(event~="terminate")then
if(event=="timer")and(p1==moveTimer)then
moveHandlerTimer()
elseif(event=="timer")and(p1==dragTimer)then
dragHandlerTimer()
else
for k, v in pairs(frames) do
v:eventHandler(event, p1, p2, p3, p4)
end end
keyEvent(activeFrame, ...)
drawFrames()
return
end end
end end
handleSchedules(event, p1, p2, p3, p4)
if(event=="timer")and(a[1]==moveTimer)then
moveHandlerTimer()
elseif(event=="timer")and(a[1]==dragTimer)then
dragHandlerTimer()
else
for k, v in pairs(frames) do
v:eventHandler(event, ...)
end
end
handleSchedules(event, ...)
drawFrames() drawFrames()
end end
@@ -337,9 +332,9 @@ basalt = {
end end
end, end,
update = function(event, p1, p2, p3, p4) update = function(event, ...)
if (event ~= nil) then if (event ~= nil) then
local ok, err = xpcall(basaltUpdateEvent, debug.traceback, event, p1, p2, p3, p4) local ok, err = xpcall(basaltUpdateEvent, debug.traceback, event, ...)
if not(ok)then if not(ok)then
basaltError(err) basaltError(err)
return return