1493 lines
33 KiB
Lua
1493 lines
33 KiB
Lua
local assets = {
|
||
[ "init.lua" ] = {
|
||
id = 0,
|
||
content = "if not self.init then\
|
||
if not fs.exists(\"LevelOS/startup/LevelCloud.lua\") then\
|
||
--LevelOS.maximize()\
|
||
term.setBackgroundColor(colors.white)\
|
||
term.clear()\
|
||
os.queueEvent(\"term_resize\")\
|
||
os.pullEvent()\
|
||
local a = {lUtils.popup(\"LevelCloud\",\"Do you want to install LevelCloud?\",27,9,{\"Install\",\"Cancel\"})}\
|
||
if a[1] and a[3] == \"Install\" then\
|
||
local oterm = term.current()\
|
||
local nterm = window.create(term.current(),1,1,51,19,false)\
|
||
term.redirect(nterm)\
|
||
shell.run(\"lStore get Sm0f1bwQ LevelOS/startup/LevelCloud.lua\")\
|
||
term.redirect(oterm)\
|
||
local b = {lUtils.popup(\"LevelCloud\",\"LevelCloud installed. Please reboot to synchronize.\",27,9,{\"Reboot\",\"Later\"})}\
|
||
if b[1] and b[3] == \"Reboot\" then\
|
||
lOS.save()\
|
||
os.reboot()\
|
||
end\
|
||
end\
|
||
shapescape.exit()\
|
||
end\
|
||
local w,h = lOS.wAll.getSize()\
|
||
if lOS.tbSize then\
|
||
h = h-lOS.tbSize\
|
||
end\
|
||
local th = 14\
|
||
if h > 32 then\
|
||
th = 25\
|
||
end\
|
||
LevelOS.self.window.win.reposition(w-30,h-(th-1),25,th)\
|
||
LevelOS.setWin(25,th,\"borderless\")\
|
||
LevelOS.setTitle(\"Cloud\")\
|
||
\
|
||
self.init = true\
|
||
end",
|
||
name = "init.lua",
|
||
},
|
||
[ "open_folder.lua" ] = {
|
||
id = 1,
|
||
content = "lOS.execute(\"LevelOS/explorer.lua User/Cloud\")",
|
||
name = "open_folder.lua",
|
||
},
|
||
[ "sync_click.lua" ] = {
|
||
id = 7,
|
||
content = "while true do\
|
||
e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_click\" or e[1] == \"mouse_up\" then\
|
||
if e[3] >= self.x1 and e[4] >= self.y1 and e[3] <= self.x2 and e[4] <= self.y2 then\
|
||
if e[1] == \"mouse_click\" then\
|
||
self.oldcolor = self.txtcolor\
|
||
self.txtcolor = colors.lightBlue\
|
||
else\
|
||
--shell.run(\"pastebin run 4DaaHGRP\")\
|
||
if not lOS.cloudSync then\
|
||
lOS.cloudTimer = 30\
|
||
end\
|
||
end\
|
||
end\
|
||
if e[1] == \"mouse_up\" and self.oldcolor then\
|
||
self.txtcolor = self.oldcolor\
|
||
self.oldcolor = nil\
|
||
end\
|
||
end\
|
||
end",
|
||
name = "sync_click.lua",
|
||
},
|
||
colorsync2 = {
|
||
id = 8,
|
||
content = "if not lOS.userID then\
|
||
self.color = colors.red\
|
||
self.txt = \" Offline\"\
|
||
elseif lOS.cloudSync then\
|
||
self.color = colors.orange\
|
||
self.txt = \" Syncing...\"\
|
||
elseif self.color == colors.orange then\
|
||
self.color = colors.blue\
|
||
self.txt = \"LevelCloud\"\
|
||
end",
|
||
name = "colorsync2",
|
||
},
|
||
[ "log.lua" ] = {
|
||
id = 3,
|
||
content = "local c = 0\
|
||
local scr = 0\
|
||
local scroll = 0\
|
||
local lasty = 0\
|
||
term.setBackgroundColor(colors.gray)\
|
||
term.clear()\
|
||
os.sleep(0.1)\
|
||
local isConflict\
|
||
local objs = {}\
|
||
local doRender = true\
|
||
local sl = shapescape.getSlides()\
|
||
while true do\
|
||
isConflict = false\
|
||
local w,h = term.getSize()\
|
||
if lOS.cloudLog and (scr ~= scroll or #lOS.cloudLog ~= c or lOS.cloudSync or doRender) then\
|
||
doRender = false\
|
||
c = #lOS.cloudLog\
|
||
if c > 40 then\
|
||
for t=1,c-40 do\
|
||
table.remove(lOS.cloudLog,t)\
|
||
end\
|
||
end\
|
||
scr = scroll\
|
||
c = #lOS.cloudLog\
|
||
local l = lOS.cloudLog\
|
||
term.setBackgroundColor(colors.gray)\
|
||
term.clear()\
|
||
local y = 2-scroll\
|
||
if lOS.cloud and lOS.cloud.conflicts and lOS.cloud.conflicts then\
|
||
for k,v in pairs(lOS.cloud.conflicts) do\
|
||
isConflict = true\
|
||
-- will only run if theres an entry, but also only once\
|
||
-- big brain moment :sunglasses:\
|
||
term.setBackgroundColor(colors.red)\
|
||
local txt = \"There are multiple versions of a file. Resolve >\"\
|
||
local lines = lUtils.wordwrap(txt,w-2)\
|
||
lOS.boxClear(1,y,w,y+2+#lines)\
|
||
objs.conflict = {x1=1,y1=y,x2=w,y2=y+2+#lines}\
|
||
term.setCursorPos(2,y+1)\
|
||
term.setTextColor(colors.white)\
|
||
term.write(\"There is a sync issue\")\
|
||
term.setTextColor(colors.lightGray)\
|
||
for i=1,#lines do\
|
||
term.setCursorPos(2,y+i+1)\
|
||
term.write(lines[i])\
|
||
end\
|
||
y = y+4+#lines\
|
||
term.setBackgroundColor(colors.gray)\
|
||
break\
|
||
end\
|
||
end\
|
||
for t=c,1,-1 do\
|
||
term.setCursorPos(1,y)\
|
||
if l[t].action == \"Upload\" then\
|
||
term.setTextColor(colors.blue)\
|
||
term.write(\"\\24 \")\
|
||
elseif l[t].action == \"Download\" then\
|
||
term.setTextColor(colors.lime)\
|
||
term.write(\"\\25 \")\
|
||
elseif l[t].action == \"Deleted\" then\
|
||
term.setTextColor(colors.red)\
|
||
term.write(\"× \")\
|
||
elseif l[t].action == \"Conflict\" then\
|
||
term.setTextColor(colors.orange)\
|
||
term.write(\"! \")\
|
||
end\
|
||
term.setTextColor(colors.white)\
|
||
term.write(fs.getName(l[t].destination))\
|
||
y = y+1\
|
||
local dif = os.epoch(\"utc\")-l[t].timestamp\
|
||
dif = math.floor(dif/1000)\
|
||
term.setTextColor(colors.lightGray)\
|
||
term.setCursorPos(1,y)\
|
||
if dif <= 0 then\
|
||
term.write(\"Just now\")\
|
||
elseif dif == 1 then\
|
||
term.write(\"1 second ago\")\
|
||
elseif dif < 60 then\
|
||
term.write(dif..\" seconds ago\")\
|
||
elseif dif < 3600 then\
|
||
term.write(math.floor(dif/60)..\" minute(s) ago\")\
|
||
elseif dif < 86400 then\
|
||
term.write(math.floor(dif/3600)..\" hour(s) ago\")\
|
||
else\
|
||
term.write(math.floor(dif/86400)..\" day(s) ago\")\
|
||
end\
|
||
y = y+1\
|
||
term.setCursorPos(1,y)\
|
||
term.setTextColor(colors.lightGray)\
|
||
term.write(\"In \")\
|
||
term.setTextColor(colors.cyan)\
|
||
local loc = fs.getDir(l[t].destination)\
|
||
if loc == \"\" then loc = \"Cloud\" end\
|
||
if #loc+4 > w then\
|
||
loc = \"..\"..loc:sub(#loc-(w-6))\
|
||
end\
|
||
term.write(loc)\
|
||
term.setTextColor(colors.white)\
|
||
y = y+2\
|
||
end\
|
||
lasty = y\
|
||
end\
|
||
e = {os.pullEvent()}\
|
||
if lOS.cloudLog and e[1] == \"mouse_scroll\" and e[3] >= self.x1 and e[4] >= self.y1 and e[3] <= self.x2 and e[4] <= self.y2 then\
|
||
if scroll+e[2] >= 0 then\
|
||
scroll = scroll+e[2]\
|
||
end\
|
||
elseif e[1] == \"mouse_click\" and objs.conflict and lUtils.isInside(e[3],e[4],self) and lUtils.isInside(e[3],e[4],objs.conflict) then\
|
||
local objs = {}\
|
||
local stop = false\
|
||
local function render()\
|
||
local y = 1\
|
||
objs = {}\
|
||
term.setBackgroundColor(colors.gray)\
|
||
term.clear()\
|
||
term.setTextColor(colors.white)\
|
||
term.setCursorPos(1,y)\
|
||
term.write(\"< Sync issues\")\
|
||
table.insert(objs,{x1=1,y1=y,x2=2,y2=y,func=function() stop = true end})\
|
||
y = y+2\
|
||
for path,v in pairs(lOS.cloud.conflicts) do\
|
||
term.setBackgroundColor(colors.gray)\
|
||
lOS.explorer.drawIcon(path,-1,y-1,true,true)\
|
||
term.setTextColor(colors.white)\
|
||
term.setCursorPos(5,y)\
|
||
term.write(fs.getName(path))\
|
||
y = y+1\
|
||
--[[term.setCursorPos(5,y)\
|
||
term.setTextColor(colors.lightGray)\
|
||
term.write(\"In \")\
|
||
term.setTextColor(colors.cyan)\
|
||
local loc = fs.getDir(path)\
|
||
if loc == \"\" then loc = \"Cloud\" end\
|
||
if #loc+8 > w then\
|
||
loc = \"..\"..loc:sub(#loc-(w-10)):gsub(\"^User/Cloud/\",\"\")\
|
||
end\
|
||
term.write(loc)]]\
|
||
local btxt = \"Resolve\"\
|
||
term.setTextColor(colors.cyan)\
|
||
lUtils.border(5,y,5+#btxt+1,y+2,nil,1)\
|
||
table.insert(objs,{x1=5,y1=y+1,x2=5+#btxt+1,y2=y+1,func=\
|
||
function()\
|
||
local tW,tH = lOS.wAll.getSize()\
|
||
if tW <= 51 or tH <= 19 then\
|
||
LevelOS.setWin(\"fullscreen\")\
|
||
else\
|
||
LevelOS.setWin(math.floor(tW/2-51/2)+1,math.floor(tH/2-19/2)+1,51,19,\"borderless\")\
|
||
LevelOS.self.window.resizable = false\
|
||
end\
|
||
sl.resolvepath=path\
|
||
shapescape.setSlide(2)\
|
||
stop=true\
|
||
end\
|
||
})\
|
||
term.setCursorPos(6,y+1)\
|
||
term.setBackgroundColor(colors.cyan)\
|
||
term.setTextColor(colors.white)\
|
||
term.write(btxt)\
|
||
y = y+3\
|
||
end\
|
||
end\
|
||
render()\
|
||
while not stop do\
|
||
local e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_click\" then\
|
||
for o=1,#objs do\
|
||
if lUtils.isInside(e[3],e[4],objs[o]) then\
|
||
objs[o].func()\
|
||
end\
|
||
end\
|
||
end\
|
||
end\
|
||
doRender = true\
|
||
end\
|
||
end",
|
||
name = "log.lua",
|
||
},
|
||
[ "resolveaction.lua" ] = {
|
||
id = 12,
|
||
content = "local sl = shapescape.getSlides()\
|
||
if self.isSel then\
|
||
self.border.color = colors.white\
|
||
self.isSel = false\
|
||
local mdpth = \"AppData/LevelCloud/\"..lOS.username\
|
||
local cpath = sl.resolvepath:gsub(\"^User/Cloud\",\"\")\
|
||
local mdfile = fs.combine(mdpth,cpath)\
|
||
if self.txt:find(\"local\") then\
|
||
-- delete online file\
|
||
-- how tf u even do that bro\
|
||
local h = http.post(\"https://os.leveloper.cc/cDelete.php\",\"path=\"..textutils.urlEncode(cpath),{Cookie=lOS.userID})\
|
||
if h then\
|
||
fs.delete(mdfile)\
|
||
lOS.cloudTimer = 30\
|
||
lOS.cloud.conflicts[sl.resolvepath] = nil\
|
||
end\
|
||
elseif self.txt:find(\"online\") then\
|
||
-- delete local file\
|
||
fs.delete(mdfile)\
|
||
fs.delete(sl.resolvepath)\
|
||
lOS.cloudTimer = 30\
|
||
lOS.cloud.conflicts[sl.resolvepath] = nil\
|
||
elseif self.txt:find(\"both\") then\
|
||
local name = fs.getName(sl.resolvepath)\
|
||
local pth = fs.getDir(sl.resolvepath)\
|
||
while fs.exists(fs.combine(pth,name)) do\
|
||
local temp,con = lUtils.inputbox(\"LevelCloud\",\"Please enter a new filename for \"..fs.getName(sl.resolvepath),25,11,{\"OK\"})\
|
||
if not con then\
|
||
return\
|
||
end\
|
||
if temp then\
|
||
name = temp\
|
||
end\
|
||
end\
|
||
local npth = fs.combine(pth,name)\
|
||
fs.delete(mdfile)\
|
||
fs.move(sl.resolvepath,npth)\
|
||
lOS.cloud.conflicts[sl.resolvepath] = nil\
|
||
end\
|
||
sl.resolvepath = nil\
|
||
local w,h = lOS.wAll.getSize()\
|
||
if lOS.tbSize then\
|
||
h = h-lOS.tbSize\
|
||
end\
|
||
local th = 14\
|
||
if h > 32 then\
|
||
th = 25\
|
||
end\
|
||
self.render()\
|
||
LevelOS.self.window.win.reposition(w-30,h-(th-1),25,th)\
|
||
LevelOS.setWin(25,th,\"borderless\")\
|
||
LevelOS.setTitle(\"Cloud\")\
|
||
shapescape.setSlide(1)\
|
||
end",
|
||
name = "resolveaction.lua",
|
||
},
|
||
[ "resync.lua" ] = {
|
||
id = 5,
|
||
content = "if not lOS.cloudSync then\
|
||
--shell.run(\"pastebin run 4DaaHGRP\")\
|
||
lOS.cloudTimer = 30\
|
||
end",
|
||
name = "resync.lua",
|
||
},
|
||
[ "coroclick.lua" ] = {
|
||
id = 2,
|
||
content = "while true do\
|
||
e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_click\" or e[1] == \"mouse_up\" then\
|
||
if e[3] >= self.x1 and e[4] >= self.y1 and e[3] <= self.x2 and e[4] <= self.y2 then\
|
||
if e[1] == \"mouse_click\" then\
|
||
self.oldcolor = self.txtcolor\
|
||
self.txtcolor = colors.lightBlue\
|
||
else\
|
||
-- stupid bitch\
|
||
--self.color = self.oldcolor or self.color\
|
||
end\
|
||
end\
|
||
if e[1] == \"mouse_up\" and self.oldcolor then\
|
||
self.txtcolor = self.oldcolor\
|
||
self.oldcolor = nil\
|
||
end\
|
||
end\
|
||
end",
|
||
name = "coroclick.lua",
|
||
},
|
||
[ "close_click.lua" ] = {
|
||
id = 9,
|
||
content = "local function dClose()\
|
||
while true do\
|
||
local e = {os.pullEvent()}\
|
||
--local x1,y1 = LevelOS.self.window.win.getPosition()\
|
||
--local w,h = LevelOS.self.window.win.getSize()\
|
||
--local x2,y2 = x1+(w-1),y1+(h-1)\
|
||
if e[1] == \"mouse_up\" and e[3] == self.x1 and e[4] == self.y1 then\
|
||
shapescape.exit()\
|
||
--elseif e[1] == \"mouse_click\" and (e[3] < x1 or e[4] < y1 or e[3] > x2 or e[4] > y2) then\
|
||
--elseif lOS.wins[#lOS.wins] ~= LevelOS.self.window then\
|
||
--shapescape.exit()\
|
||
end\
|
||
end\
|
||
end\
|
||
local ok,err = pcall(dClose)\
|
||
self.txt = err",
|
||
name = "close_click.lua",
|
||
},
|
||
[ "closebutton.lua" ] = {
|
||
id = 11,
|
||
content = "local isSel = false\
|
||
local sl = shapescape.getSlides()\
|
||
while true do\
|
||
local e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_click\" and lUtils.isInside(e[3],e[4],self) and not isSel then\
|
||
self.otxtcolor = self.txtcolor\
|
||
self.txtcolor = colors.lightGray\
|
||
isSel = true\
|
||
elseif e[1] == \"mouse_up\" and isSel then\
|
||
isSel = false\
|
||
self.txtcolor = self.otxtcolor\
|
||
self.otxtcolor = nil\
|
||
if lUtils.isInside(e[3],e[4],self) then\
|
||
sl.resolvepath = nil\
|
||
local w,h = lOS.wAll.getSize()\
|
||
if lOS.tbSize then\
|
||
h = h-lOS.tbSize\
|
||
end\
|
||
local th = 14\
|
||
if h > 32 then\
|
||
th = 25\
|
||
end\
|
||
LevelOS.self.window.win.reposition(w-30,h-(th-1),25,th)\
|
||
LevelOS.setWin(25,th,\"borderless\")\
|
||
LevelOS.setTitle(\"Cloud\")\
|
||
shapescape.setSlide(1)\
|
||
end\
|
||
end\
|
||
end",
|
||
name = "closebutton.lua",
|
||
},
|
||
[ "log_out.lua" ] = {
|
||
id = 4,
|
||
content = "if not lOS.cloudSync then\
|
||
lUtils.logout()\
|
||
lOS.cloudTimer = 30\
|
||
end",
|
||
name = "log_out.lua",
|
||
},
|
||
colorsync = {
|
||
id = 6,
|
||
content = "if not lOS.userID then\
|
||
self.color = colors.red\
|
||
self.border.color = colors.black\
|
||
elseif lOS.cloudSync then\
|
||
self.color = colors.orange\
|
||
self.border.color = colors.red\
|
||
elseif self.color == colors.orange then\
|
||
self.color = colors.blue\
|
||
self.border.color = colors.cyan\
|
||
end",
|
||
name = "colorsync",
|
||
},
|
||
[ "resolve.lua" ] = {
|
||
id = 10,
|
||
content = "local function func()\
|
||
local sl = shapescape.getSlides()\
|
||
self.isSel = false\
|
||
while true do\
|
||
local e = {os.pullEvent()}\
|
||
if e[1] == \"mouse_click\" and lUtils.isInside(e[3],e[4],self) then\
|
||
self.border.color = colors.cyan\
|
||
self.isSel = true\
|
||
elseif e[1] == \"mouse_up\" and self.isSel then\
|
||
self.border.color = colors.white\
|
||
if lUtils.isInside(e[3],e[4],self) then\
|
||
-- nothing anymore\
|
||
end\
|
||
end\
|
||
end\
|
||
end\
|
||
local ok,err = pcall(func)\
|
||
if not ok then\
|
||
_G.clickerror = err\
|
||
end",
|
||
name = "resolve.lua",
|
||
},
|
||
}
|
||
|
||
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 = {
|
||
{
|
||
y = 21,
|
||
x = 65,
|
||
h = 19,
|
||
w = 51,
|
||
objs = {
|
||
{
|
||
color = 0,
|
||
y2 = 17,
|
||
y1 = 17,
|
||
x1 = 27,
|
||
txt = "helo am veri cool",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
input = false,
|
||
x2 = 44,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 51,
|
||
y2 = 19,
|
||
y1 = 1,
|
||
x1 = 1,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = 0,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 128,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 0,
|
||
},
|
||
{
|
||
x2 = 50,
|
||
y2 = 16,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 2,
|
||
type = "window",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 3,
|
||
},
|
||
},
|
||
ox2 = 1,
|
||
color = 32768,
|
||
y1 = 4,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 3,
|
||
},
|
||
{
|
||
x2 = 51,
|
||
y2 = 3,
|
||
border = {
|
||
color = 512,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = 6,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 2048,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
y1 = 1,
|
||
},
|
||
{
|
||
x2 = 32,
|
||
y2 = 2,
|
||
x1 = 21,
|
||
ox1 = 5,
|
||
txt = "LevelCloud",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = 8,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
ox2 = -6,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
input = false,
|
||
color = 2048,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap center",
|
||
Left = "Snap center",
|
||
Bottom = "Snap top",
|
||
},
|
||
y1 = 2,
|
||
},
|
||
{
|
||
color = 128,
|
||
y2 = 19,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
oy1 = 2,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
y1 = 17,
|
||
x2 = 51,
|
||
snap = {
|
||
Top = "Snap bottom",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 0,
|
||
},
|
||
{
|
||
x2 = 13,
|
||
y2 = 18,
|
||
x1 = 3,
|
||
oy1 = 1,
|
||
txt = "Open folder",
|
||
type = "text",
|
||
oy2 = 1,
|
||
txtcolor = 512,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = 1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 2,
|
||
},
|
||
},
|
||
input = false,
|
||
color = 128,
|
||
snap = {
|
||
Top = "Snap bottom",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
y1 = 18,
|
||
},
|
||
{
|
||
color = 128,
|
||
y2 = 18,
|
||
x1 = 43,
|
||
ox1 = 8,
|
||
oy1 = 1,
|
||
txt = "Log out",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = 4,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 2,
|
||
},
|
||
},
|
||
ox2 = 2,
|
||
txtcolor = 512,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x2 = 49,
|
||
input = false,
|
||
y1 = 18,
|
||
snap = {
|
||
Top = "Snap bottom",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 1,
|
||
},
|
||
{
|
||
x2 = 49,
|
||
y2 = 2,
|
||
x1 = 49,
|
||
ox1 = 2,
|
||
txt = "",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 7,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
ox2 = 2,
|
||
y1 = 2,
|
||
input = false,
|
||
color = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 3,
|
||
y2 = 2,
|
||
y1 = 2,
|
||
x1 = 3,
|
||
txt = "×",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Initialize = {
|
||
[ 2 ] = -1,
|
||
},
|
||
selected = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 9,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
input = false,
|
||
color = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
},
|
||
c = 1,
|
||
},
|
||
{
|
||
y = 21,
|
||
x = 66,
|
||
h = 19,
|
||
w = 51,
|
||
objs = {
|
||
{
|
||
x2 = 30,
|
||
y2 = 2,
|
||
y1 = 2,
|
||
x1 = 6,
|
||
txt = "Resolve the file conflict",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 2048,
|
||
input = false,
|
||
color = 0,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 50,
|
||
y2 = 4,
|
||
y1 = 3,
|
||
x1 = 6,
|
||
txt = "The online version and the local version have changes that couldn't be merged.",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 32768,
|
||
input = false,
|
||
color = 0,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 50,
|
||
y2 = 8,
|
||
y1 = 5,
|
||
x1 = 2,
|
||
txt = " Keep local file",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = 12,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 10,
|
||
},
|
||
},
|
||
txtcolor = 2048,
|
||
input = false,
|
||
color = 0,
|
||
border = {
|
||
color = 1,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 49,
|
||
y2 = 7,
|
||
y1 = 7,
|
||
x1 = 5,
|
||
txt = "Overwrite the online file with the local one",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 32768,
|
||
input = false,
|
||
color = 0,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
color = 0,
|
||
y2 = 12,
|
||
y1 = 9,
|
||
x1 = 2,
|
||
txt = " Keep online file",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = 12,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 10,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 2048,
|
||
input = false,
|
||
x2 = 50,
|
||
border = {
|
||
color = 1,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
color = 0,
|
||
y2 = 11,
|
||
y1 = 11,
|
||
x1 = 5,
|
||
txt = "Overwrite the local file with the online one",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 32768,
|
||
input = false,
|
||
x2 = 49,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 50,
|
||
y2 = 16,
|
||
border = {
|
||
color = 1,
|
||
type = 1,
|
||
},
|
||
x1 = 2,
|
||
txt = " Keep both files",
|
||
type = "text",
|
||
event = {
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = 12,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 10,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 2048,
|
||
input = false,
|
||
color = 0,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
y1 = 13,
|
||
},
|
||
{
|
||
color = 0,
|
||
y2 = 15,
|
||
y1 = 15,
|
||
x1 = 5,
|
||
txt = "Rename the local file",
|
||
type = "text",
|
||
event = {
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 32768,
|
||
input = false,
|
||
x2 = 49,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap left",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
x2 = 51,
|
||
y2 = 19,
|
||
y1 = 17,
|
||
x1 = 1,
|
||
oy1 = 2,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
color = 256,
|
||
snap = {
|
||
Top = "Snap bottom",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 0,
|
||
},
|
||
{
|
||
x2 = 50,
|
||
y2 = 18,
|
||
x1 = 44,
|
||
ox1 = 7,
|
||
oy1 = 1,
|
||
txt = " Close",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 11,
|
||
},
|
||
},
|
||
ox2 = 1,
|
||
y1 = 18,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
color = 1,
|
||
input = false,
|
||
txtcolor = 32768,
|
||
snap = {
|
||
Top = "Snap bottom",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 1,
|
||
},
|
||
{
|
||
color = 0,
|
||
y2 = 17,
|
||
y1 = 1,
|
||
x1 = 1,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
x2 = 51,
|
||
border = {
|
||
color = 256,
|
||
type = 1,
|
||
},
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap bottom",
|
||
},
|
||
oy2 = 2,
|
||
},
|
||
{
|
||
x2 = 51,
|
||
y2 = 1,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
x1 = 1,
|
||
type = "rect",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
ox2 = 0,
|
||
color = 128,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap left",
|
||
Bottom = "Snap top",
|
||
},
|
||
y1 = 1,
|
||
},
|
||
{
|
||
x2 = 11,
|
||
y2 = 1,
|
||
y1 = 1,
|
||
x1 = 2,
|
||
txt = "LevelCloud",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
input = false,
|
||
color = 0,
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
color = 0,
|
||
y2 = 1,
|
||
x1 = 49,
|
||
ox1 = 2,
|
||
txt = " ×",
|
||
type = "text",
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = 11,
|
||
},
|
||
},
|
||
txtcolor = 1,
|
||
ox2 = 0,
|
||
y1 = 1,
|
||
input = false,
|
||
x2 = 51,
|
||
snap = {
|
||
Top = "Snap top",
|
||
Right = "Snap right",
|
||
Left = "Snap right",
|
||
Bottom = "Snap top",
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
},
|
||
{
|
||
type = "rect",
|
||
x2 = 4,
|
||
y2 = 4,
|
||
y1 = 2,
|
||
x1 = 2,
|
||
image = {
|
||
{
|
||
"",
|
||
" b ",
|
||
"b ",
|
||
},
|
||
{
|
||
"",
|
||
"bb9",
|
||
" 9 ",
|
||
},
|
||
{
|
||
"",
|
||
" ",
|
||
" ",
|
||
},
|
||
},
|
||
border = {
|
||
color = 0,
|
||
type = 1,
|
||
},
|
||
color = 0,
|
||
event = {
|
||
mouse_up = {
|
||
[ 2 ] = -1,
|
||
},
|
||
mouse_click = {
|
||
[ 2 ] = -1,
|
||
},
|
||
focus = {
|
||
[ 2 ] = -1,
|
||
},
|
||
render = {
|
||
[ 2 ] = -1,
|
||
},
|
||
update = {
|
||
[ 2 ] = -1,
|
||
},
|
||
Coroutine = {
|
||
[ 2 ] = -1,
|
||
},
|
||
},
|
||
},
|
||
},
|
||
c = 2,
|
||
},
|
||
}
|
||
|
||
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,...) |