ClientOS/LevelOS/Start_Menu.sgui
2025-10-21 00:40:14 +02:00

327 lines
6.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local assets = {
[ "programs.lua" ] = {
id = 0,
content = "local scrollY = 0\
local programs = {}\
local found = fs.list(\"Program_Files\")\
local icons = lUtils.asset.load(\"LevelOS/assets/Compact_Icons.limg\")\
local A = string.byte(\"A\")\
local Z = string.byte(\"Z\")\
for f=1,#found do\
local l = string.byte(found[f]:sub(1,1):upper())\
local dest\
if l >= A and l <= Z then\
if not programs[l] then programs[l] = {} end\
dest = programs[l]\
else\
if not programs[A-1] then programs[A-1] = {} end\
dest = programs[A-1]\
end\
local program = {path=fs.combine(\"Program_Files\",found[f]),name=found[f]:sub(1,1):upper()..lUtils.getFileName(found[f]:sub(2))}\
--program.icon = whatever\
table.insert(dest,program)\
end\
local function render()\
local y = 2\
term.setBackgroundColor(colors.gray)\
term.setTextColor(colors.white)\
term.clear()\
for l=A-1,Z do\
if programs[l] then\
local letter\
if l == A-1 then\
letter = \"#\"\
else\
letter = string.char(l)\
end\
term.setCursorPos(1,y)\
term.write(letter)\
y = y+2\
for t=1,#programs[l] do\
lUtils.renderImg(icons[8],1,y)\
term.setCursorPos(5,y)\
term.setTextColor(colors.white)\
term.write(programs[l][t].name)\
y = y+1\
term.setTextColor(colors.lightGray)\
term.write( -- creator\
end\
end\
end",
name = "programs.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 = 61,
w = 51,
h = 19,
objs = {
{
color = 128,
y2 = 19,
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,
},
},
x2 = 5,
y1 = 1,
snap = {
Top = "Snap top",
Right = "Snap left",
Left = "Snap left",
Bottom = "Snap bottom",
},
oy2 = 0,
},
{
color = 128,
y2 = 18,
border = {
color = 0,
type = 1,
},
x1 = 2,
image = {
{
"”•”",
"000",
"TTT",
},
{
"Œ…",
"000",
"TTT",
},
},
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,
},
},
oy2 = 1,
x2 = 4,
y1 = 17,
snap = {
Top = "Snap bottom",
Right = "Snap left",
Left = "Snap left",
Bottom = "Snap bottom",
},
},
{
color = 128,
y2 = 15,
border = {
color = 0,
type = 1,
},
x1 = 2,
image = {
{
"‡’",
"TT0",
"00T",
},
{
"‚‡€",
"00T",
"TTT",
},
},
oy1 = 5,
type = "rect",
event = {
mouse_up = {
[ 2 ] = -1,
},
mouse_click = {
[ 2 ] = -1,
},
focus = {
[ 2 ] = -1,
},
render = {
[ 2 ] = -1,
},
update = {
[ 2 ] = -1,
},
Coroutine = {
[ 2 ] = -1,
},
},
oy2 = 4,
x2 = 4,
y1 = 14,
snap = {
Top = "Snap bottom",
Right = "Snap left",
Left = "Snap left",
Bottom = "Snap bottom",
},
},
{
color = 128,
y2 = 12,
border = {
color = 0,
type = 1,
},
x1 = 2,
image = {
{
"‘€„",
"TT0",
"00T",
},
{
"ˆ€",
"00T",
"TTT",
},
},
oy1 = 8,
type = "rect",
event = {
mouse_up = {
[ 2 ] = -1,
},
mouse_click = {
[ 2 ] = -1,
},
focus = {
[ 2 ] = -1,
},
render = {
[ 2 ] = -1,
},
update = {
[ 2 ] = -1,
},
Coroutine = {
[ 2 ] = -1,
},
},
oy2 = 7,
x2 = 4,
y1 = 11,
snap = {
Top = "Snap bottom",
Right = "Snap left",
Left = "Snap left",
Bottom = "Snap bottom",
},
},
{
color = 128,
y2 = 19,
y1 = 1,
x1 = 6,
type = "window",
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 = 0,
type = 1,
},
snap = {
Top = "Snap top",
Right = "Snap right",
Left = "Snap left",
Bottom = "Snap bottom",
},
oy2 = 0,
},
},
c = 1,
},
}
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
lUtils.shapescape.run(slides,...)