25 lines
1.5 KiB
Lua
25 lines
1.5 KiB
Lua
local da=require("elementManager")
|
|
local _b=require("libraries/expect")local ab=require("errorManager")local bb={}bb.traceback=true
|
|
bb._events={}bb._schedule={}bb._plugins={}bb.LOGGER=require("log")local cb=nil
|
|
local db=false
|
|
function bb.create(bc,cc)if(cc==nil)then cc=da.generateId()end
|
|
local dc=da.getElement(bc).new(cc,bb)local _d,ad=pcall(require,"main")if not _d then ab(false,ad)end
|
|
return dc end
|
|
function bb.createFrame()local bc=bb.create("BaseFrame")cb=bc;return bc end;function bb.getElementManager()return da end;function bb.getMainFrame()if(cb==nil)then
|
|
cb=bb.createFrame()end;return cb end;function bb.setActiveFrame(bc)
|
|
cb=bc;return false end;function bb.scheduleUpdate(bc)
|
|
table.insert(bb._schedule,bc)return#bb._schedule end;function bb.removeSchedule(bc)bb._schedule[bc]=
|
|
nil end
|
|
local function _c(bc,...)
|
|
if(bc=="terminate")then bb.stop()end
|
|
if bc:find("mouse")then if cb then cb:handleEvent(bc,...)end end
|
|
if bc:find("key")then if cb then cb:handleEvent(bc,...)end end;if bb._events[bc]then
|
|
for cc,dc in ipairs(bb._events[bc])do dc(...)end end end;local function ac()if(cb)then cb:render()end end;function bb.update()
|
|
for bc,cc in
|
|
pairs(bb._schedule)do if type(cc)=="function"then cc()end end end;function bb.stop()term.clear()
|
|
term.setCursorPos(1,1)db=false end
|
|
function bb.run(bc)db=bc
|
|
if(bc==nil)then db=true end
|
|
local function cc()ac()while db do _c(os.pullEventRaw())end end
|
|
while db do local dc,_d=pcall(cc)if not(dc)then ab.header="Basalt Runtime Error"
|
|
ab.error(_d)end end end;bb.autoUpdate=bb.run;return bb |