-reworked monitor support (you are able to write on monitors through computer) -fixed offset bugs -couple of smaller bugfixes
149 lines
4.5 KiB
Lua
149 lines
4.5 KiB
Lua
local function drawFrames()
|
|
mainFrame:draw()
|
|
mainFrame:drawUpdate()
|
|
for _,v in pairs(monFrames)do
|
|
v:draw()
|
|
v:drawUpdate()
|
|
end
|
|
end
|
|
|
|
local updaterActive = false
|
|
local function basaltUpdateEvent(event, p1, p2, p3, p4)
|
|
if(mainFrame~=nil)then
|
|
if (event == "mouse_click") then
|
|
mainFrame:mouseHandler(event, p1, p2, p3, p4)
|
|
activeFrame = mainFrame
|
|
elseif (event == "mouse_drag") then
|
|
mainFrame:mouseHandler(event, p1, p2, p3, p4)
|
|
activeFrame = mainFrame
|
|
elseif (event == "mouse_up") then
|
|
mainFrame:mouseHandler(event, p1, p2, p3, p4)
|
|
activeFrame = mainFrame
|
|
elseif (event == "mouse_scroll") then
|
|
mainFrame:mouseHandler(event, p1, p2, p3, p4)
|
|
activeFrame = mainFrame
|
|
elseif (event == "monitor_touch") then
|
|
if(monFrames[p1]~=nil)then
|
|
monFrames[p1]:mouseHandler(event, p1, p2, p3, p4)
|
|
activeFrame = monFrames[p1]
|
|
end
|
|
end
|
|
end
|
|
|
|
if(event == "key") or (event == "char") then
|
|
activeFrame:keyHandler(event, p1)
|
|
activeFrame:backgroundKeyHandler(event, p1)
|
|
end
|
|
|
|
if(event == "key")then
|
|
keyActive[p1] = true
|
|
end
|
|
|
|
if(event == "key_up")then
|
|
keyActive[p1] = false
|
|
end
|
|
|
|
for _, v in pairs(frames) do
|
|
v:eventHandler(event, p1, p2, p3, p4)
|
|
end
|
|
if (updaterActive) then
|
|
drawFrames()
|
|
end
|
|
end
|
|
|
|
function basalt.autoUpdate(isActive)
|
|
updaterActive = isActive
|
|
if(isActive==nil)then updaterActive = true end
|
|
drawFrames()
|
|
while updaterActive do
|
|
local event, p1, p2, p3, p4 = os.pullEventRaw() -- change to raw later
|
|
basaltUpdateEvent(event, p1, p2, p3, p4)
|
|
end
|
|
end
|
|
|
|
function basalt.update(event, p1, p2, p3, p4)
|
|
if (event ~= nil) then
|
|
basaltUpdateEvent(event, p1, p2, p3, p4)
|
|
else
|
|
drawFrames()
|
|
end
|
|
end
|
|
|
|
function basalt.stop()
|
|
updaterActive = false
|
|
end
|
|
|
|
function basalt.isKeyDown(key)
|
|
if(keyActive[key]==nil)then return false end
|
|
return keyActive[key];
|
|
end
|
|
|
|
function basalt.getFrame(name)
|
|
for _, value in pairs(frames) do
|
|
if (value.name == name) then
|
|
return value
|
|
end
|
|
end
|
|
end
|
|
|
|
function basalt.getActiveFrame()
|
|
return activeFrame
|
|
end
|
|
|
|
function basalt.setActiveFrame(frame)
|
|
if (frame:getType() == "Frame") then
|
|
activeFrame = frame
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function basalt.createFrame(name)
|
|
for _, v in pairs(frames) do
|
|
if (v.name == name) then
|
|
return nil
|
|
end
|
|
end
|
|
local newFrame = Frame(name)
|
|
table.insert(frames, newFrame)
|
|
return newFrame
|
|
end
|
|
|
|
function basalt.removeFrame(name)
|
|
frames[name] = nil
|
|
end
|
|
|
|
|
|
if (basalt.debugger) then
|
|
basalt.debugFrame = basalt.createFrame("basaltDebuggingFrame"):showBar():setBackground(colors.lightGray):setBar("Debug", colors.black, colors.gray)
|
|
basalt.debugList = basalt.debugFrame:addList("debugList"):setSize(basalt.debugFrame.width - 2, basalt.debugFrame.height - 3):setPosition(2, 3):setScrollable(true):show()
|
|
basalt.debugFrame:addButton("back"):setAnchor("right"):setSize(1, 1):setText("\22"):onClick(function() basalt.oldFrame:show() end):setBackground(colors.red):show()
|
|
basalt.debugLabel = basalt.debugFrame:addLabel("debugLabel"):onClick(function() basalt.oldFrame = mainFrame basalt.debugFrame:show() end):setBackground(colors.black):setForeground(colors.white):setAnchor("bottom"):ignoreOffset():setZIndex(20):show()
|
|
end
|
|
|
|
if (basalt.debugger) then
|
|
function basalt.debug(...)
|
|
local args = { ... }
|
|
if (mainFrame.name ~= "basaltDebuggingFrame") then
|
|
if (mainFrame ~= basalt.debugFrame) then
|
|
basalt.debugLabel:setParent(mainFrame)
|
|
end
|
|
end
|
|
local str = ""
|
|
for key, value in pairs(args) do
|
|
str = str .. tostring(value) .. (#args ~= key and ", " or "")
|
|
end
|
|
basalt.debugLabel:setText("[Debug] " .. str)
|
|
basalt.debugList:addItem(str)
|
|
if (basalt.debugList:getItemCount() > 50) then
|
|
basalt.debugList:removeItem(1)
|
|
end
|
|
basalt.debugList:setValue(basalt.debugList:getItem(basalt.debugList:getItemCount()))
|
|
if(basalt.debugList.getItemCount() > basalt.debugList:getHeight())then
|
|
basalt.debugList:setIndexOffset(basalt.debugList:getItemCount() - basalt.debugList:getHeight())
|
|
end
|
|
basalt.debugLabel:show()
|
|
end
|
|
end
|
|
|
|
return basalt |