1538 lines
38 KiB
Lua
1538 lines
38 KiB
Lua
local assets = {
|
||
[ "background.lua" ] = {
|
||
id = 8,
|
||
name = "background.lua",
|
||
content = "-- render bg\
|
||
\
|
||
os.sleep(0.5)\
|
||
ogP = {}\
|
||
local s = shapescape.getSlide()\
|
||
for a=2,4 do\
|
||
ogP[a] = s.objs[a].oy1\
|
||
end\
|
||
\
|
||
while true do\
|
||
-- render bg if app changes\
|
||
local e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_scroll\" then\
|
||
for a=2,4 do\
|
||
if s.objs[a].oy1+e[2] >= ogP[a] then\
|
||
s.objs[a].oy1 = s.objs[a].oy1+e[2]\
|
||
if a ~= 2 then\
|
||
s.objs[a].oy2 = s.objs[a].oy2+e[2]\
|
||
end\
|
||
end\
|
||
end\
|
||
end\
|
||
end\
|
||
",
|
||
},
|
||
[ "updatething.lua" ] = {
|
||
id = 10,
|
||
name = "updatething.lua",
|
||
content = "local s = shapescape.getSlide()\
|
||
if s.updateFunc then\
|
||
\9s.updateFunc()\
|
||
\9s.updateFunc = nil\
|
||
end",
|
||
},
|
||
[ "mainscreen.lua" ] = {
|
||
id = 2,
|
||
name = "mainscreen.lua",
|
||
content = "function doYourThing()\
|
||
local sl = shapescape.getSlides()\
|
||
local s = shapescape.getSlide()\
|
||
local hpost = http.post\
|
||
local function download(name,pth,saveto,run)\
|
||
\9local f = hpost(\"https://old.leveloper.cc/sGet.php\",\"path=\"..textutils.urlEncode(pth)..\"&\"..rType..\"=\"..textutils.urlEncode(name),{Cookie=lOS.userID}).readAll()\
|
||
\9if f and f ~= \"409\" and f ~= \"403\" and f ~= \"401\" then\
|
||
\9\9if run then\
|
||
\9\9\9return f\
|
||
\9\9else\
|
||
\9\9\9lUtils.fwrite(saveto,f)\
|
||
\9\9\9return true\
|
||
\9\9end\
|
||
\9else\
|
||
\9\9return false\
|
||
\9end\
|
||
end\
|
||
local function get(name)\
|
||
\
|
||
\9--write(\"Connecting to LevelStore... \")\
|
||
\
|
||
\9rType = \"code\"\
|
||
\9local response, err = http.post(\"https://old.leveloper.cc/sGet.php\",\"path=\"..textutils.urlEncode(\"\")..\"&code=\"..textutils.urlEncode(name),{Cookie=lOS.userID})\
|
||
\
|
||
\9if not response then\
|
||
\9\9rType = \"name\"\
|
||
\9\9response, err = http.post(\"https://old.leveloper.cc/sGet.php\",\"path=\"..textutils.urlEncode(\"\")..\"&name=\"..textutils.urlEncode(name),{Cookie=lOS.userID})\
|
||
\9end\
|
||
\
|
||
\9if response then\
|
||
\9\9local tree = {}\
|
||
\9\9local folders = {}\
|
||
\9\9local function searchFolder(folder)\
|
||
\9\9\9--print(\"Searching folder root/\"..folder)\
|
||
\9\9\9local f = hpost(\"https://old.leveloper.cc/sGet.php\",\"path=\"..textutils.urlEncode(folder)..\"&\"..rType..\"=\"..textutils.urlEncode(name),{Cookie=lOS.userID}).readAll()\
|
||
\9\9\9--print(f)\
|
||
\9\9\9local f2 = f\
|
||
\9\9\9while true do\
|
||
\9\9\9\9local file = nil\
|
||
\9\9\9\9file,f = lUtils.getField(f,\"file\")\
|
||
\9\9\9\9if not file then\
|
||
\9\9\9\9\9break\
|
||
\9\9\9\9else\
|
||
\9\9\9\9\9local name = lUtils.getField(file,\"name\")\
|
||
\9\9\9\9\9tree[#tree+1] = fs.combine(folder,name)\
|
||
\9\9\9\9\9--print(\"Found \"..fs.combine(folder,name))\
|
||
\9\9\9\9end\
|
||
\9\9\9end\
|
||
\9\9\9f = f2\
|
||
\9\9\9while true do\
|
||
\9\9\9\9local file = nil\
|
||
\9\9\9\9file,f = lUtils.getField(f,\"folder\")\
|
||
\9\9\9\9if not file then\
|
||
\9\9\9\9\9break\
|
||
\9\9\9\9else\
|
||
\9\9\9\9\9local name = lUtils.getField(file,\"name\")\
|
||
\9\9\9\9\9--if not fs.exists(fs.combine(folder,name)) then\
|
||
\9\9\9\9\9\9--fs.makeDir(fs.combine(folder,name))\
|
||
\9\9\9\9\9--end\
|
||
\9\9\9\9\9folders[#folders+1] = fs.combine(folder,name)\
|
||
\9\9\9\9\9searchFolder(fs.combine(folder,name))\
|
||
\9\9\9\9end\
|
||
\9\9\9end\
|
||
\9\9\9return true\
|
||
\9\9end\
|
||
\9\9searchFolder(\"\")\
|
||
\9\9--print(\"Success.\")\
|
||
\
|
||
\9\9return tree,folders\
|
||
\9else\
|
||
\9\9printError(\"Failed.\")\
|
||
\9\9print(err)\
|
||
\9end\
|
||
end\
|
||
\
|
||
local circ = lUtils.asset.load(\"LevelOS/assets/circProgress.limg\")\
|
||
\
|
||
bigfont.writeOn(term.current(),1,\"Loading...\")\
|
||
local pth = \"Program_Files\"\
|
||
local appdata = \"AppData/lStore\"\
|
||
if not fs.exists(appdata) then\
|
||
\9fs.makeDir(appdata)\
|
||
end\
|
||
local apps = {} -- retrieve from servers\
|
||
_G.debugApps = apps\
|
||
local response,err = http.get(\"https://old.leveloper.cc/sList.php\",{Cookie=lOS.userID})\
|
||
if not response then\
|
||
\9term.setBackgroundColor(colors.black)\
|
||
\9term.clear()\
|
||
\9bigfont.writeOn(term.current(),1,err)\
|
||
\9return\
|
||
end\
|
||
local res = response.readAll()\
|
||
--local gf = lUtils.getField\
|
||
local cols = {}\
|
||
for k,v in pairs(colors) do\
|
||
\9if type(v) == \"number\" and v ~= colors.gray and v ~= colors.white and v ~= colors.black then\
|
||
\9\9table.insert(cols,v)\
|
||
\9end\
|
||
end\
|
||
local selected = {}\
|
||
while true do\
|
||
\9local p\
|
||
\9p,res = lUtils.getField(res,\"project\")\
|
||
\9if p ~= nil then\
|
||
\9\9local function gf(field)\
|
||
\9\9\9return (lUtils.getField(p,field))\
|
||
\9\9end\
|
||
\9\9local app = {code=gf(\"code\"),name=string.gsub(gf(\"title\"),\"_\",\" \"),creator=gf(\"creator\"),timestamp=gf(\"version\"),listing=gf(\"listing\")}\
|
||
\9\9if gf(\"icon\") then\
|
||
\9\9\9local icon = gf(\"icon\")\
|
||
\9\9\9if icon and textutils.unserialize(icon) then\
|
||
\9\9\9\9app.icon = textutils.unserialize(icon)[1]\
|
||
\9\9\9end\
|
||
\9\9end\
|
||
\9\9if gf(\"iconBig\") then\
|
||
\9\9\9local ico = gf(\"iconBig\")\
|
||
\9\9\9if ico and textutils.unserialize(ico) then\
|
||
\9\9\9\9app.ico = textutils.unserialize(ico)[1]\
|
||
\9\9\9end\
|
||
\9\9end\
|
||
\9\9if gf(\"background\") then\
|
||
\9\9\9app.background = gf(\"background\")\
|
||
\9\9end\
|
||
\9\9if gf(\"description\") then\
|
||
\9\9\9app.description = gf(\"description\")\
|
||
\9\9else\
|
||
\9\9\9app.description = \"<text>No description.</text>\"\
|
||
\9\9end\
|
||
\9\9app.creatorName = gf(\"creator_name\")\
|
||
\9\9if gf(\"rating\") and gf(\"ratings\") then\
|
||
\9\9\9app.rating = tonumber(gf(\"rating\"))\
|
||
\9\9\9app.ratings = tonumber(gf(\"ratings\"))\
|
||
\9\9else\
|
||
\9\9\9app.rating = 0\
|
||
\9\9\9app.ratings = 0\
|
||
\9\9end\
|
||
\9\9if gf(\"fname\") then\
|
||
\9\9\9app.fname = gf(\"fname\")\
|
||
\9\9else\
|
||
\9\9\9app.fname = string.gsub(app.name,\"%W\",\"_\")\
|
||
\9\9end\
|
||
\9\9app.verified = gf(\"verified\")\
|
||
\9\9if app.verified == \"true\" then\
|
||
\9\9\9app.verified = true\
|
||
\9\9else\
|
||
\9\9\9app.verified = false\
|
||
\9\9end\
|
||
\9\9if app.creator == \"2\" then\
|
||
\9\9\9app.verified = true\
|
||
\9\9end\
|
||
\9\9app.bg = cols[math.random(1,#cols)]\
|
||
\9\9table.insert(apps,app)\
|
||
\9else\
|
||
\9\9break\
|
||
\9end\
|
||
end\
|
||
if not fs.exists(pth) then\
|
||
\9fs.makeDir(pth)\
|
||
end\
|
||
local tCol = {bg=colors.black,txt=colors.white,txt2=colors.white,app=colors.gray,topbar=colors.black,sel=colors.blue,heart=colors.red}\
|
||
local aW,aH = 14,11\
|
||
local function path(app)\
|
||
\9return fs.combine(pth,app.fname)\
|
||
end\
|
||
sl.api = {get=get,download=download,path=path,circ=circ,tCol=tCol}\
|
||
local function textbox(txt,x1,y1,x2,y2)\
|
||
\9local x,y = x1,y1\
|
||
\9local w,h = x2-(x-1),y2-(y-1)\
|
||
\9local bg,fg = term.getBackgroundColor(),term.getTextColor()\
|
||
\9local win = window.create(term.current(),x,y,w,h,false)\
|
||
\9win.setBackgroundColor(bg)\
|
||
\9win.setTextColor(fg)\
|
||
\9win.clear()\
|
||
\9win.setCursorPos(1,1)\
|
||
\9local oterm = term.current()\
|
||
\9term.redirect(win)\
|
||
\9write(txt)\
|
||
\9term.redirect(oterm)\
|
||
\9for y=y1,y2 do\
|
||
\9\9term.setCursorPos(x1,y)\
|
||
\9\9term.blit(win.getLine(y-(y1-1)))\
|
||
\9end\
|
||
end\
|
||
local function bigWrite(txt)\
|
||
\9local x,y = term.getCursorPos()\
|
||
\9bigfont.writeOn(term.current(),1,txt,x,y)\
|
||
end\
|
||
local function rApp(app,x,y)\
|
||
\9app.x1,app.y1 = x,y\
|
||
\9app.x2,app.y2 = x+(aW-1),y+(aH-1)\
|
||
\9if app.ico then\
|
||
\9\9lUtils.renderImg(app.ico,x,y)\
|
||
\9elseif app.icon then\
|
||
\9\9term.setBackgroundColor(app.bg)\
|
||
\9\9--local w,h = term.getSize()\
|
||
\9\9for q=0,4 do\
|
||
\9\9\9term.setCursorPos(x,y+q)\
|
||
\9\9\9term.write(string.rep(\" \",aW))\
|
||
\9\9end\
|
||
\9\9lUtils.renderImg(app.icon,x+math.floor(aW/2 - 3/2),y+1)\
|
||
\9else\
|
||
\9\9term.setBackgroundColor(app.bg)\
|
||
\9\9--local w,h = term.getSize()\
|
||
\9\9for q=0,4 do\
|
||
\9\9\9term.setCursorPos(x,y+q)\
|
||
\9\9\9term.write(string.rep(\" \",aW))\
|
||
\9\9end\
|
||
\9\9term.setTextColor(colors.white)\
|
||
\9\9term.setCursorPos(x+math.ceil(aW/2)-3,y+1)\
|
||
\9\9bigWrite(string.upper(string.sub(app.name,1,2)))\
|
||
\9end\
|
||
\9if app.listing == \"unlisted\" then\
|
||
\9\9term.setTextColor(colors.lightGray)\
|
||
\9elseif app.listing == \"premium\" then\
|
||
\9\9term.setTextColor(colors.orange)\
|
||
\9else\
|
||
\9\9term.setTextColor(tCol.txt)\
|
||
\9end\
|
||
\9if selected == app then\
|
||
\9\9term.setBackgroundColor(colors.lightGray)\
|
||
\9else\
|
||
\9\9term.setBackgroundColor(tCol.app)\
|
||
\9end\
|
||
\9for q=5,aH-1 do\
|
||
\9\9term.setCursorPos(x,y+q)\
|
||
\9\9term.write(string.rep(\" \",aW))\
|
||
\9end\
|
||
\9--textbox(app.name,x+1,y+6,x+aW-2,y+7)\
|
||
\9local txt = lUtils.wordwrap(app.name, aW-2)\
|
||
\9term.setCursorPos(x+1, y+6)\
|
||
\9term.write(txt[1])\
|
||
\9term.setCursorPos(x+1, y+7)\
|
||
\9if txt[2] then\
|
||
\9\9term.write(txt[2])\
|
||
\9\9term.setCursorPos(x+1, y+8)\
|
||
\9end\
|
||
\9local creatorName = app.creatorName\
|
||
\9\
|
||
\9if creatorName == \"Noodle\" then\
|
||
\9\9creatorName = \"Leveloper\"\
|
||
\9\9term.setTextColor(colors.cyan)\
|
||
\9else\
|
||
\9\9term.setTextColor(colors.lightGray)\
|
||
\9end\
|
||
\9local creatorName = creatorName:sub(1, aW-2)\
|
||
\9term.write(creatorName)\
|
||
\9\
|
||
\9term.setCursorPos(x+1,y+aH-2)\
|
||
\9for q=1,5 do\
|
||
\9\9if math.floor(app.rating+0.5) >= q then\
|
||
\9\9\9term.setTextColor(tCol.heart)\
|
||
\9\9else\
|
||
\9\9\9term.setTextColor(colors.lightGray)\
|
||
\9\9end\
|
||
\9\9term.write(\"\\3\")\
|
||
\9end\
|
||
\9term.setTextColor(colors.lightGray)\
|
||
\9term.write(\" \"..app.ratings)\
|
||
\9term.setCursorPos(x+aW-3,y+aH-2)\
|
||
\9if fs.exists(path(app)) then\
|
||
\9\9term.setTextColor(colors.red)\
|
||
\9\9term.write(\"×\")\
|
||
\9\9term.setCursorPos(x+1,y+aH-1)\
|
||
\9\9term.setTextColor(colors.lightGray)\
|
||
\9\9term.write(\"Installed\")\
|
||
\9else\
|
||
\9\9term.setTextColor(colors.blue)\
|
||
\9\9term.write(\"\\25\")\
|
||
\9end\
|
||
end\
|
||
local scroll = 0\
|
||
\
|
||
local function matchSearch(app)\
|
||
\9if not s.var.search or s.var.search == \"\" then\
|
||
\9\9return true\
|
||
\9elseif app.name:lower():find(s.var.search:lower(), nil, true) then\
|
||
\9\9return true\
|
||
\9else\
|
||
\9\9return false\
|
||
\9end\
|
||
end\
|
||
\
|
||
local function render()\
|
||
\9term.setBackgroundColor(colors.black)\
|
||
\9term.clear()\
|
||
\9local w,h = term.getSize()\
|
||
\9local cX = 3\
|
||
\9local cY = 2\
|
||
\9for a=1,#apps do\
|
||
\9\9if (s.var.menu.id == \"home\" or (s.var.menu.id == \"verified\" and apps[a].verified) or (s.var.menu.id == \"installed\" and fs.exists(path(apps[a])))) and matchSearch(apps[a]) then\
|
||
\9\9\9--rApp(apps[a],cX,cY)\
|
||
\9\9\9if cX + (aW) >= w then\
|
||
\9\9\9\9cX = 3\
|
||
\9\9\9\9cY = cY+aH+1\
|
||
\9\9\9end\
|
||
\9\9\9rApp(apps[a],cX,cY-scroll)\
|
||
\9\9\9cX = cX+aW+2\
|
||
\9\9end\
|
||
\9end\
|
||
end\
|
||
\
|
||
function s.var.resetRender()\
|
||
\9scroll = 0\
|
||
\9os.queueEvent(\"store_render\")\
|
||
end\
|
||
\
|
||
render()\
|
||
while true do\
|
||
\9local e = {os.pullEvent()}\
|
||
\9if e[1] == \"store_render\" then\
|
||
\9\9render()\
|
||
\9elseif (e[1] == \"mouse_click\" or e[1] == \"mouse_up\") and s.var.sb and e[3] >= s.var.sidebar.x1 then\
|
||
\9\9-- nothing\
|
||
\9elseif e[1] == \"term_resize\" then\
|
||
\9\9render()\
|
||
\9elseif e[1] == \"mouse_click\" then\
|
||
\9\9local x,y = e[3],e[4]\
|
||
\9\9for k,a in ipairs(apps) do\
|
||
\9\9\9if x >= a.x1 and y >= a.y1 and x <= a.x2 and y <= a.y2 then\
|
||
\9\9\9\9selected = a\
|
||
\9\9\9\9render()\
|
||
\9\9\9end\
|
||
\9\9end\
|
||
\9elseif e[1] == \"mouse_up\" then\
|
||
\9\9local x,y = e[3],e[4]\
|
||
\9\9if selected.x2 and selected.y2 then\
|
||
\9\9\9local app = selected\
|
||
\9\9\9if x == selected.x2-2 and y == selected.y2-1 then\
|
||
\9\9\9\9local o = {lUtils.popup(\"LevelStore\",\"Do you want to install \"..selected.name..\"?\",25,9,{\"Install\",\"Cancel\"})}\
|
||
\9\9\9\9--local app = selected\
|
||
\9\9\9\9selected = {}\
|
||
\9\9\9\9render()\
|
||
\9\9\9\9if o[1] and o[3] == \"Install\" then\
|
||
\9\9\9\9\9lUtils.renderImg(circ[1],x-1,y-1)\
|
||
\9\9\9\9\9local tree,folders = get(app.code)\
|
||
\9\9\9\9\9--if not tree then return end\
|
||
\9\9\9\9\9--term.write(\"Downloading... \")\
|
||
\9\9\9\9\9--term.write(\"0%\")\
|
||
\9\9\9\9\9local sPath = path(app)\
|
||
\9\9\9\9\9if #tree > 0 or #folders > 0 then\
|
||
\9\9\9\9\9\9fs.makeDir(sPath)\
|
||
\9\9\9\9\9\9for f=1,#folders do\
|
||
\9\9\9\9\9\9\9fs.makeDir(fs.combine(sPath,folders[f]))\
|
||
\9\9\9\9\9\9end\
|
||
\9\9\9\9\9\9for f=1,#tree do\
|
||
\9\9\9\9\9\9\9download(app.code,tree[f],fs.combine(sPath,tree[f]))\
|
||
\9\9\9\9\9\9\9term.setBackgroundColor(tCol.app)\
|
||
\9\9\9\9\9\9\9term.setTextColor(tCol.txt)\
|
||
\9\9\9\9\9\9\9lUtils.renderImg(circ[math.floor(8*(f/#tree)+1.5)],x-1,y-1)\
|
||
\9\9\9\9\9\9\9--term.setCursorPos(x,y)\
|
||
\9\9\9\9\9\9\9--term.write(math.floor(99*(f/#tree)))\
|
||
\9\9\9\9\9\9end\
|
||
\9\9\9\9\9\9local b = {lUtils.popup(\"LevelStore\",\"Do you want to create a shortcut to \"..app.name..\"?\",25,9,{\"Yes\",\"No\"})}\
|
||
\9\9\9\9\9\9if b[1] and b[3] == \"Yes\" then\
|
||
\9\9\9\9\9\9\9lOS.genIco(sPath)\
|
||
\9\9\9\9\9\9end\
|
||
\9\9\9\9\9end\
|
||
\9\9\9\9\9lUtils.renderImg(circ[9],x-1,y-1)\
|
||
\9\9\9\9\9render()\
|
||
\9\9\9\9end\
|
||
\9\9\9elseif x >= app.x1 and y >= app.y1 and x <= app.x2 and y <= app.y2 then\
|
||
\9\9\9\9local slides = shapescape.getSlides()\
|
||
\9\9\9\9slides.app = app\
|
||
\9\9\9\9shapescape.setSlide(2)\
|
||
\9\9\9\9--lUtils.popup(\"LevelStore\",\"Click: \"..x..\",\"..y..\" vs \"..(selected.x2-2)..\",\"..(selected.y2-2),27,9,{\"OK\"})\
|
||
\9\9\9end\
|
||
\9\9end\
|
||
\9\9selected = {}\
|
||
\9\9render()\
|
||
\9elseif e[1] == \"mouse_scroll\" then\
|
||
\9\9if scroll+e[2] >= 0 then\
|
||
\9\9\9scroll = scroll+e[2]\
|
||
\9\9\9render()\
|
||
\9\9end\
|
||
\9end\
|
||
end\
|
||
end\
|
||
local ok,err = pcall(doYourThing)\
|
||
if not ok then\
|
||
\9printError(err)\
|
||
end\
|
||
--os.sleep(10)",
|
||
},
|
||
[ "Top_menu.lua" ] = {
|
||
id = 0,
|
||
name = "Top_menu.lua",
|
||
content = "local s = shapescape.getSlide()\
|
||
if not s.var then\
|
||
s.var = {}\
|
||
end\
|
||
if not s.var.theme then\
|
||
s.var.theme = {txt=colors.white,txt2=colors.lightGray,bg=colors.gray,app=colors.gray,bb=colors.blue}\
|
||
end\
|
||
local th = s.var.theme\
|
||
local acc = {{\"\\159\\131\\139 \",\"----\",\"bbb-\"},{\" \\144\\133\\149\",\"-b0b\",\"b0b-\"},{\"\\130\\143\\135 \",\"000-\",\"----\"}}\
|
||
local src = {{\" \\159\\140\\144\",\"--00\",\"-0--\"},{\" \\154 \\154\",\"---0\",\"-0--\"},{\"\\136\\129\\131 \",\"000-\",\"----\"}}\
|
||
local function g(str)\
|
||
return (str:gsub(\"-\",lUtils.toBlit(th.bg)))\
|
||
end\
|
||
local function blit(p)\
|
||
term.blit(p[1],g(p[2]),g(p[3]))\
|
||
end\
|
||
s.var.menus = {{name=\"Home\", id=\"home\"},{name=\"Verified\", id=\"verified\"},{name=\"Installed\", id=\"installed\"}}\
|
||
s.var.menu = s.var.menus[1]\
|
||
local bline = {x1=2,x2=3}\
|
||
local function render()\
|
||
term.setBackgroundColor(th.bg)\
|
||
term.clear()\
|
||
term.setCursorPos(1,2)\
|
||
for t=1,#s.var.menus do\
|
||
local m = s.var.menus[t]\
|
||
if s.var.menu == m then\
|
||
term.setTextColor(th.txt)\
|
||
else\
|
||
term.setTextColor(th.txt2)\
|
||
end\
|
||
term.write(\" \")\
|
||
m.x1 = ({term.getCursorPos()})[1]\
|
||
term.write(m.name)\
|
||
m.x2 = ({term.getCursorPos()})[1]-1\
|
||
term.write(\" \")\
|
||
end\
|
||
local m = s.var.menu\
|
||
local function b()\
|
||
term.setCursorPos(1,3)\
|
||
term.setBackgroundColor(th.bg)\
|
||
term.clearLine()\
|
||
term.setCursorPos(bline.x1,3)\
|
||
term.setTextColor(th.bb)\
|
||
term.write(string.rep(\"\\131\",bline.x2-(bline.x1-1)))\
|
||
local w,h = term.getSize()\
|
||
for a=1,#acc do\
|
||
--w,h = term.getSize()\
|
||
term.setCursorPos(w-4,a)\
|
||
blit(acc[a])\
|
||
end\
|
||
if not src.x then src.x = 10 end\
|
||
for a=1,#src do\
|
||
term.setCursorPos(w-src.x,a)\
|
||
blit(src[a])\
|
||
end\
|
||
if src.x > 11 then\
|
||
if th.bg == colors.black then\
|
||
term.setBackgroundColor(colors.gray)\
|
||
else\
|
||
term.setBackgroundColor(colors.black)\
|
||
end\
|
||
term.setTextColor(th.bg)\
|
||
lUtils.border((w-src.x)+4,1,w-7,3)\
|
||
term.setCursorPos((w-src.x)+5,2)\
|
||
term.write(string.rep(\" \",src.x-12))\
|
||
if s.var.search then\
|
||
term.setCursorPos((w-src.x)+5,2)\
|
||
term.setTextColor(th.txt2)\
|
||
term.write(string.sub(s.var.search,1,src.x-12))\
|
||
end\
|
||
end\
|
||
term.setBackgroundColor(th.bg)\
|
||
end\
|
||
local v = 5\
|
||
while bline.x2 < m.x2 do\
|
||
bline.x2 = bline.x2+math.ceil((m.x2-bline.x2)/v)\
|
||
b()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
while bline.x1 < m.x1 do\
|
||
bline.x1 = bline.x1+math.ceil((m.x1-bline.x1)/v)\
|
||
b()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
while bline.x1 > m.x1 do\
|
||
bline.x1 = bline.x1-math.ceil((bline.x1-m.x1)/v)\
|
||
b()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
while bline.x2 > m.x2 do\
|
||
bline.x2 = bline.x2-math.ceil((bline.x2-m.x2)/v)\
|
||
b()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
b()\
|
||
end\
|
||
render()\
|
||
local ow,oh = term.getSize()\
|
||
while true do\
|
||
local e = {os.pullEvent()}\
|
||
local w,h = term.getSize()\
|
||
if e[1] == \"mouse_up\" and e[2] == 1 and e[4] == 2 then\
|
||
for t=1,#s.var.menus do\
|
||
local m = s.var.menus[t]\
|
||
if e[3] >= m.x1 and e[3] <= m.x2 then\
|
||
\9s.var.menu = {}\
|
||
\9--s.var.resetRender()\
|
||
s.var.menu = m\
|
||
render()\
|
||
--s.var.resetRender()\
|
||
end\
|
||
end\
|
||
if e[3] >= w-4 and e[3] <= w-1 then\
|
||
if s.var.sidebar and not s.var.sb then\
|
||
table.insert(s.objs,s.var.sidebar)\
|
||
s.var.sb = true\
|
||
elseif s.var.sidebar and s.var.sb then\
|
||
for o=1,#s.objs do\
|
||
if s.objs[o] == s.var.sidebar then\
|
||
table.remove(s.objs,o)\
|
||
s.var.sb = false\
|
||
break\
|
||
end\
|
||
end\
|
||
end\
|
||
elseif e[3] >= w-src.x and e[3] <= w-7 then\
|
||
if not src.search then\
|
||
if w > 80 then\
|
||
max = 24\
|
||
else\
|
||
max = 12\
|
||
end\
|
||
for t=1,max,2 do\
|
||
src.x = src.x+2\
|
||
render()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
src.search = true\
|
||
term.setBackgroundColor(colors.black)\
|
||
term.setTextColor(colors.white)\
|
||
src.box = lUtils.input((w-src.x)+5,2,w-8,2,{overflowX=\"scroll\",overflowY=\"none\"})\
|
||
end\
|
||
--[[local txtbox = window.create(term.current(),(w-src.x)+5,2,src.x-12,1)\
|
||
if th.bg == colors.black then\
|
||
txtbox.setBackgroundColor(colors.gray)\
|
||
else\
|
||
txtbox.setBackgroundColor(colors.black)\
|
||
end\
|
||
txtbox.setTextColor(colors.white)\
|
||
txtbox.clear()\
|
||
txtbox.setCursorPos(1,1)\
|
||
local txtcor = coroutine.create(function() s.var.search = lUtils.read() term.setCursorBlink(false) end)\
|
||
local oterm = term.current()\
|
||
while coroutine.status(txtcor) ~= \"dead\" do\
|
||
e = {os.pullEvent()}\
|
||
render()\
|
||
txtbox.redraw()\
|
||
term.redirect(txtbox)\
|
||
coroutine.resume(txtcor,unpack(e))\
|
||
term.redirect(oterm)\
|
||
term.setTextColor(colors.red)\
|
||
term.setCursorBlink(true)\
|
||
end]]\
|
||
\
|
||
local box = src.box\
|
||
box.state = true\
|
||
if #box.txt > 0 then\
|
||
\9box.select = {1, #box.txt}\
|
||
\9box.cursor.a = #box.txt+1\
|
||
end\
|
||
box.update(\"term_resize\")\
|
||
box.render()\
|
||
while box.state do\
|
||
\9local e = {os.pullEvent()}\
|
||
\9if e[1] == \"key\" and e[2] == keys.enter then\
|
||
\9\9box.state = false\
|
||
\9else\
|
||
\9\9box.update(unpack(e))\
|
||
\9\9box.render()\
|
||
\9\9if s.var.search ~= box.txt then\
|
||
\9\9\9s.var.search = box.txt\
|
||
\9\9\9s.var.resetRender()\
|
||
\9\9end\
|
||
\9end\
|
||
end\
|
||
term.setCursorBlink(false)\
|
||
render()\
|
||
s.var.resetRender()\
|
||
--[[else\
|
||
while src.x > 10 do\
|
||
src.x = src.x-1\
|
||
render()\
|
||
os.sleep(0.05)\
|
||
end\
|
||
src.search = false\
|
||
end]]\
|
||
end\
|
||
elseif e[1] == \"term_resize\" or w ~= ow or h ~= oh then\
|
||
render()\
|
||
end\
|
||
ow,oh = w,h\
|
||
end",
|
||
},
|
||
[ "appPage_topbar.lua" ] = {
|
||
id = 5,
|
||
name = "appPage_topbar.lua",
|
||
content = "local sl = shapescape.getSlides()\
|
||
local get = sl.api.get\
|
||
local download = sl.api.download\
|
||
local path = sl.api.path\
|
||
local s = shapescape.getSlide()\
|
||
local circSymbol = lUtils.asset.load(\"LevelOS/assets/Circle_Symbols.limg\")\
|
||
if not s.var then s.var = {} end\
|
||
while true do\
|
||
term.setBackgroundColor(colors.lightGray)\
|
||
term.clear()\
|
||
--[[term.setCursorPos(4,3)\
|
||
term.setTextColor(colors.gray)\
|
||
term.write(sl.app.code)]]\
|
||
if fs.exists(sl.api.path(sl.app)) then\
|
||
lUtils.renderImg(circSymbol[2],2,2)\
|
||
term.setBackgroundColor(colors.lightGray)\
|
||
term.setTextColor(colors.white)\
|
||
term.setCursorPos(8,3)\
|
||
term.write(\"Installed\")\
|
||
end\
|
||
local e = {os.pullEvent()}\
|
||
if s.var.download then\
|
||
lUtils.renderImg(circSymbol[1],2,2)\
|
||
term.setCursorPos(8,3)\
|
||
term.write(\"0%\")\
|
||
term.setCursorPos(12,3)\
|
||
term.setTextColor(colors.white)\
|
||
term.setBackgroundColor(colors.lightGray)\
|
||
local w,h = term.getSize()\
|
||
for t=12,w-14 do\
|
||
term.write(\"\\140\")\
|
||
end\
|
||
term.write(\" ×\")\
|
||
--os.sleep(5)\
|
||
local app = sl.app\
|
||
local tree,folders = get(app.code)\
|
||
--if not tree then return end\
|
||
--term.write(\"Downloading... \")\
|
||
--term.write(\"0%\")\
|
||
local sPath = path(app)\
|
||
if #tree > 0 or #folders > 0 then\
|
||
fs.makeDir(sPath)\
|
||
for f=1,#folders do\
|
||
fs.makeDir(fs.combine(sPath,folders[f]))\
|
||
end\
|
||
for f=1,#tree do\
|
||
download(app.code,tree[f],fs.combine(sPath,tree[f]))\
|
||
term.setBackgroundColor(colors.lightGray)\
|
||
term.setCursorPos(8,3)\
|
||
term.write(math.floor((f/#tree)*100+0.5)..\"%\")\
|
||
term.setCursorPos(12,3)\
|
||
for t=12,w-14 do\
|
||
if (t-11)/(w-14-11) <= f/#tree then\
|
||
term.setTextColor(colors.blue)\
|
||
else\
|
||
term.setTextColor(colors.white)\
|
||
end\
|
||
term.write(\"\\140\")\
|
||
end\
|
||
end\
|
||
\9\9\9s.updateFunc = function()\
|
||
\9\9\9\9local b = {lUtils.popup(\"LevelStore\",\"Do you want to create a shortcut to \"..app.name..\"?\",25,9,{\"Yes\",\"No\"})}\
|
||
\9\9\9\9if b[1] and b[3] == \"Yes\" then\
|
||
\9\9\9\9\9lOS.genIco(sPath)\
|
||
\9\9\9\9end\
|
||
\9\9\9end\
|
||
\9\9\9os.pullEvent()\
|
||
end\
|
||
s.var.download = false\
|
||
end\
|
||
end",
|
||
},
|
||
[ "toMain.lua" ] = {
|
||
id = 3,
|
||
name = "toMain.lua",
|
||
content = "local s = shapescape.getSlide()\
|
||
if not s.var.download then\
|
||
os.queueEvent(\"term_resize\")\
|
||
shapescape.setSlide(1)\
|
||
end",
|
||
},
|
||
[ "sidebar.lua" ] = {
|
||
id = 1,
|
||
name = "sidebar.lua",
|
||
content = "term.setBackgroundColor(colors.gray)\
|
||
term.clear()\
|
||
local s = shapescape.getSlide()\
|
||
for t=1,#s.objs do\
|
||
if s.objs[t] == self then\
|
||
s.var.sidebar = self\
|
||
s.var.sb = false\
|
||
table.remove(s.objs,t)\
|
||
coroutine.yield()\
|
||
end\
|
||
end\
|
||
lUtils.shapescape.run({shapescape.getSlides()[3]})",
|
||
},
|
||
[ "getbuttonclick.lua" ] = {
|
||
id = 7,
|
||
name = "getbuttonclick.lua",
|
||
content = "local s = shapescape.getSlide()\
|
||
local sl = shapescape.getSlides()\
|
||
if self.txt == \" Get \" then\
|
||
s.var.download = true\
|
||
elseif self.txt == \" Run \" then\
|
||
local get,path = sl.api.get,sl.api.path\
|
||
local app = sl.app\
|
||
if fs.isDir(path(app)) == false then\
|
||
lOS.execute(path(app))\
|
||
else\
|
||
local file\
|
||
local files = fs.list(path(app))\
|
||
for f=1,#files do\
|
||
local fP = fs.combine(path(app),files[f])\
|
||
if not fs.isDir(fP) then\
|
||
if files[f] == \"main.lua\" then\
|
||
file = fP\
|
||
elseif not file and lUtils.getFileType(files[f]) == \".lua\" then\
|
||
file = fP\
|
||
end\
|
||
end\
|
||
end\
|
||
if not file then\
|
||
lUtils.popup(\"LevelStore\",\"No lua file found in this project. Please contact the developer.\",27,9,{\"Cancel\"})\
|
||
else\
|
||
lOS.execute(file)\
|
||
end\
|
||
end\
|
||
end",
|
||
},
|
||
[ "username.lua" ] = {
|
||
id = 9,
|
||
name = "username.lua",
|
||
content = "self.txt = lOS.username or \"Guest\"",
|
||
},
|
||
[ "Get_Button.lua" ] = {
|
||
id = 6,
|
||
name = "Get_Button.lua",
|
||
content = "local sl = shapescape.getSlides()\
|
||
local s = shapescape.getSlide()\
|
||
while true do\
|
||
if s.var and s.var.download then\
|
||
self.txt = \" Get \"\
|
||
self.txtcolor = colors.lightGray\
|
||
elseif fs.exists(sl.api.path(sl.app)) then\
|
||
self.txt = \" Run \"\
|
||
self.txtcolor = colors.white\
|
||
else\
|
||
self.txt = \" Get \"\
|
||
self.txtcolor = colors.white\
|
||
end\
|
||
local e = {os.pullEvent()}\
|
||
end",
|
||
},
|
||
[ "appPage.lua" ] = {
|
||
id = 4,
|
||
name = "appPage.lua",
|
||
content = "local function find(a,b)\
|
||
return string.find(a,b,nil,true)\
|
||
end\
|
||
local function tag(txt)\
|
||
if not find(txt,\"<\") then return nil end\
|
||
local txt2 = string.sub(txt,({find(txt,\"<\")})[2]+1,#txt)\
|
||
return txt2:match(\"(.-)[^%w_]\")\
|
||
end\
|
||
local function renderdesc(txt)\
|
||
local d = txt\
|
||
while true do\
|
||
local t = tag(d)\
|
||
if not t then\
|
||
return\
|
||
else\
|
||
local content\
|
||
content,d = lUtils.getField(d,t)\
|
||
if t == \"text\" then\
|
||
print(content)\
|
||
end\
|
||
end\
|
||
end\
|
||
end\
|
||
\
|
||
local function wordwrap(str)\
|
||
local x,y = term.getCursorPos()\
|
||
local tW,tH = term.getSize()\
|
||
local words = 0\
|
||
for w in str:gmatch(\"%S+\") do\
|
||
local x1,y1 = term.getCursorPos()\
|
||
if x1+(#w*3) >= tW then\
|
||
if words == 0 then\
|
||
return false,0\
|
||
else\
|
||
bigfont.bigPrint(\" \")\
|
||
end\
|
||
end\
|
||
bigfont.bigWrite(w..\" \")\
|
||
words = words+1\
|
||
end\
|
||
bigfont.bigPrint(\" \")\
|
||
return true,words\
|
||
end\
|
||
\
|
||
while true do\
|
||
term.setBackgroundColor(colors.gray)\
|
||
term.setTextColor(colors.white)\
|
||
term.clear()\
|
||
local w,h = term.getSize()\
|
||
local oterm = term.current()\
|
||
local win = window.create(term.current(),2,2,w-2,h)\
|
||
term.redirect(win)\
|
||
term.setBackgroundColor(colors.gray)\
|
||
term.setTextColor(colors.white)\
|
||
term.clear()\
|
||
term.setCursorPos(1,1)\
|
||
local slides = shapescape.getSlides()\
|
||
local app = slides.app\
|
||
if app.icon then\
|
||
lUtils.renderImg(app.icon,1,1)\
|
||
term.setCursorPos(6,1)\
|
||
end\
|
||
if not wordwrap(app.name) then\
|
||
local x,y = term.getCursorPos()\
|
||
term.setCursorPos(x,2)\
|
||
print(app.name)\
|
||
print(\"\")\
|
||
end\
|
||
print(\"\")\
|
||
renderdesc(app.description)\
|
||
local e = {os.pullEvent()}\
|
||
end",
|
||
},
|
||
}
|
||
|
||
local nAssets = {}
|
||
for key,value in pairs(assets) do nAssets[key] = value nAssets[assets[key].id] = assets[key] end
|
||
assets = nAssets
|
||
nAssets = nil
|
||
|
||
local slides = {
|
||
{
|
||
h = 19,
|
||
x = 65,
|
||
y = 22,
|
||
objs = {
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
y1 = 1,
|
||
x2 = 51,
|
||
y2 = 3,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 0,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
type = "window",
|
||
ox2 = 0,
|
||
color = 128,
|
||
},
|
||
{
|
||
oy2 = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
type = "window",
|
||
x1 = 1,
|
||
y1 = 4,
|
||
x2 = 51,
|
||
y2 = 19,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 2,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 32768,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
oy2 = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
type = "window",
|
||
x1 = 22,
|
||
y1 = 4,
|
||
x2 = 51,
|
||
y2 = 19,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox1 = 29,
|
||
ox2 = 0,
|
||
color = 128,
|
||
border = {
|
||
color = 1,
|
||
type = 1,
|
||
},
|
||
},
|
||
},
|
||
c = 1,
|
||
w = 51,
|
||
},
|
||
{
|
||
h = 19,
|
||
x = 65,
|
||
y = 22,
|
||
objs = {
|
||
{
|
||
oy2 = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
border = {
|
||
color = 128,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
y1 = 4,
|
||
x2 = 51,
|
||
y2 = 19,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 8,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = 10,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 32768,
|
||
type = "window",
|
||
},
|
||
{
|
||
oy2 = -15,
|
||
snap = {
|
||
Top = "Snap center",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
type = "window",
|
||
x1 = 9,
|
||
y1 = 12,
|
||
x2 = 43,
|
||
y2 = 34,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 4,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 8,
|
||
color = 128,
|
||
oy1 = -2,
|
||
border = {
|
||
color = 1,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
oy2 = -1,
|
||
snap = {
|
||
Top = "Snap center",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap center",
|
||
},
|
||
type = "window",
|
||
x1 = 9,
|
||
y1 = 7,
|
||
x2 = 43,
|
||
y2 = 11,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 5,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 8,
|
||
color = 128,
|
||
oy1 = 3,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
oy2 = 0,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
txtcolor = 1,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 6,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = 7,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
color = 512,
|
||
snap = {
|
||
Top = "Snap center",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap center",
|
||
},
|
||
x1 = 33,
|
||
y1 = 8,
|
||
x2 = 41,
|
||
y2 = 10,
|
||
ox1 = 18,
|
||
txt = " Get",
|
||
ox2 = 10,
|
||
type = "text",
|
||
input = false,
|
||
oy1 = 2,
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
y1 = 1,
|
||
x2 = 51,
|
||
y2 = 3,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 128,
|
||
input = false,
|
||
type = "rect",
|
||
},
|
||
{
|
||
type = "text",
|
||
txtcolor = 1,
|
||
y1 = 1,
|
||
x2 = 5,
|
||
y2 = 3,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = 3,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = " \
|
||
\27",
|
||
x1 = 1,
|
||
color = 0,
|
||
input = false,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
},
|
||
c = 2,
|
||
w = 51,
|
||
},
|
||
{
|
||
h = 19,
|
||
x = 65,
|
||
y = 22,
|
||
objs = {
|
||
{
|
||
oy2 = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
type = "rect",
|
||
x1 = 1,
|
||
y1 = 1,
|
||
x2 = 51,
|
||
y2 = 19,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 128,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
type = "text",
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 3,
|
||
y1 = 2,
|
||
x2 = 15,
|
||
y2 = 2,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = "Logged in as",
|
||
txtcolor = 1,
|
||
color = 128,
|
||
input = false,
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
txtcolor = 2048,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 16,
|
||
y1 = 2,
|
||
x2 = 25,
|
||
y2 = 2,
|
||
event = {
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 9,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = "loading...",
|
||
type = "text",
|
||
color = 0,
|
||
input = false,
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
x1 = 3,
|
||
type = "text",
|
||
txtcolor = 1,
|
||
y1 = 8,
|
||
x2 = 20,
|
||
y2 = 10,
|
||
event = {
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = " App Settings",
|
||
border = {
|
||
color = 128,
|
||
type = 1,
|
||
},
|
||
color = 32768,
|
||
input = false,
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 128,
|
||
type = 1,
|
||
},
|
||
type = "text",
|
||
x1 = 3,
|
||
y1 = 4,
|
||
x2 = 22,
|
||
y2 = 6,
|
||
event = {
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = " Manage Account",
|
||
txtcolor = 1,
|
||
color = 32768,
|
||
input = false,
|
||
},
|
||
{
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 128,
|
||
type = 1,
|
||
},
|
||
type = "text",
|
||
x1 = 3,
|
||
y1 = 12,
|
||
x2 = 19,
|
||
y2 = 14,
|
||
event = {
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txt = " Manage Apps",
|
||
txtcolor = 1,
|
||
color = 32768,
|
||
input = false,
|
||
},
|
||
},
|
||
c = 3,
|
||
w = 51,
|
||
},
|
||
{
|
||
h = 19,
|
||
x = 61,
|
||
y = 22,
|
||
objs = {},
|
||
c = 4,
|
||
w = 51,
|
||
},
|
||
}
|
||
|
||
for s=1,#slides do
|
||
local slide = slides[s]
|
||
for o=1,#slide.objs do
|
||
local obj = slide.objs[o]
|
||
for key,value in pairs(obj.event) do
|
||
if assets[ value[2] ] then
|
||
lUtils.shapescape.addScript(obj,value[2],key,assets,LevelOS,slides)
|
||
else
|
||
obj.event[key] = {function() end,-1}
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
local tArgs = {...}
|
||
if tArgs[1] and tArgs[1] == "load" then
|
||
return {assets=assets,slides=slides}
|
||
end
|
||
|
||
|
||
return lUtils.shapescape.run(slides,...) |