121 lines
4.5 KiB
Lua
121 lines
4.5 KiB
Lua
--ccvs = mwm.newCvs() -- config canvas aka settings canvas
|
|
btns = {}
|
|
function _G.btn(x,y,width,lines)
|
|
btns[#btns+1] = {}
|
|
thebtn = btns[#btns]
|
|
thebtn.x = x
|
|
thebtn.y = y
|
|
thebtn.w = width
|
|
thebtn.h = #lines+2
|
|
function thebtn.render(px,py)
|
|
if px == nil then
|
|
px,py = thebtn.x,thebtn.y
|
|
end
|
|
thebtn.blit = {{"\151",tostring(lUtils.toBlit(colors.gray)),tostring(lUtils.toBlit(term.getBackgroundColor()))}}
|
|
for t=1,thebtn.w-2 do
|
|
thebtn.blit[1][1] = thebtn.blit[1][1].."\131"
|
|
thebtn.blit[1][2] = thebtn.blit[1][2]..lUtils.toBlit(colors.gray)
|
|
thebtn.blit[1][3] = thebtn.blit[1][3]..lUtils.toBlit(term.getBackgroundColor())
|
|
end
|
|
thebtn.blit[1][1] = thebtn.blit[1][1].."\148"
|
|
thebtn.blit[1][2] = thebtn.blit[1][2]..lUtils.toBlit(term.getBackgroundColor())
|
|
thebtn.blit[1][3] = thebtn.blit[1][3]..lUtils.toBlit(colors.gray)
|
|
for t=1,#lines do
|
|
thebtn.blit[t+1] = {"\149",tostring(lUtils.toBlit(colors.gray)),tostring(lUtils.toBlit(term.getBackgroundColor()))}
|
|
for w=1,width-2 do
|
|
thebtn.blit[t+1][1] = thebtn.blit[t+1][1].." "
|
|
if t == 1 then
|
|
thebtn.blit[t+1][2] = thebtn.blit[t+1][2]..lUtils.toBlit(term.getTextColor())
|
|
else
|
|
thebtn.blit[t+1][2] = thebtn.blit[t+1][2]..lUtils.toBlit(colors.lightGray)
|
|
end
|
|
thebtn.blit[t+1][3] = thebtn.blit[t+1][3]..lUtils.toBlit(term.getBackgroundColor())
|
|
end
|
|
local thetxt = ""
|
|
if string.len(lines[t]) > thebtn.w-2 then
|
|
thetxt = string.sub(lines[t],thebtn.w-2)
|
|
else
|
|
thetxt = lines[t]
|
|
end
|
|
thebtn.blit[t+1][1] = "\149"..thetxt..string.sub(thebtn.blit[t+1][1],2+string.len(thetxt),string.len(thebtn.blit[t+1][1]))
|
|
thebtn.blit[t+1][1] = thebtn.blit[t+1][1].."\149"
|
|
thebtn.blit[t+1][2] = thebtn.blit[t+1][2]..tostring(lUtils.toBlit(term.getBackgroundColor()))
|
|
thebtn.blit[t+1][3] = thebtn.blit[t+1][3]..lUtils.toBlit(colors.gray)
|
|
end
|
|
thebtn.blit[#thebtn.blit+1] = {"\138",tostring(lUtils.toBlit(term.getBackgroundColor())),tostring(lUtils.toBlit(colors.gray))}
|
|
local tempblit = thebtn.blit[#thebtn.blit]
|
|
for t=1,thebtn.w-2 do
|
|
tempblit[1] = tempblit[1].."\143"
|
|
tempblit[2] = tempblit[2]..lUtils.toBlit(term.getBackgroundColor())
|
|
tempblit[3] = tempblit[3]..lUtils.toBlit(colors.gray)
|
|
end
|
|
tempblit[1] = tempblit[1].."\133"
|
|
tempblit[2] = tempblit[2]..lUtils.toBlit(term.getBackgroundColor())
|
|
tempblit[3] = tempblit[3]..lUtils.toBlit(colors.gray)
|
|
for t=1,#thebtn.blit do
|
|
term.setCursorPos(px,py+(t-1))
|
|
term.blit(table.unpack(thebtn.blit[t]))
|
|
end
|
|
end
|
|
return thebtn
|
|
end
|
|
lSettings = {{"Peripherals","Monitors, Speakers,","Printers"},{"Personal Settings","Background, Welcome","Screen"},{"E","Fookin nonsense","aha"},{"Hello","How are you","Mr Valentine"},{"Hey","I am good thank",":)"}}
|
|
btnW = 21
|
|
btnH = 5
|
|
scrl = 0
|
|
function setrender(scr) -- settings render, scroll (Y)
|
|
if scr == nil then
|
|
scr = 0
|
|
end
|
|
term.setBackgroundColor(colors.black)
|
|
term.clear()
|
|
local w,h = term.getSize()
|
|
term.setCursorPos(math.ceil(w/2)-math.floor(string.len("Settings")/2),2-scr)
|
|
term.setTextColor(colors.white)
|
|
term.write("Settings")
|
|
local cX = math.ceil(w/2)+1
|
|
local cY = 4
|
|
while cX-(btnW+1) > 1 do
|
|
cX = cX-(btnW+1)
|
|
end
|
|
local OGcX = cX
|
|
btns = {}
|
|
for t=1,#lSettings do
|
|
--term.setCursorPos(cX,cY-scr)
|
|
btn(cX,cY-scr,btnW,lSettings[t]).render()
|
|
if cX+(btnW*2+2) <= w then
|
|
cX = cX+(btnW+1)
|
|
else
|
|
cX = OGcX
|
|
cY = cY+btnH+1
|
|
end
|
|
end
|
|
end
|
|
setrender()
|
|
local aw,ah = term.getSize()
|
|
local ow,oh = aw,ah
|
|
while true do
|
|
e = {os.pullEvent()}
|
|
if e[1] == "mouse_scroll" then
|
|
scrl = scrl+e[2]
|
|
setrender(scrl)
|
|
elseif e[1] == "mouse_click" then
|
|
for t=1,#btns do
|
|
if e[3] >= btns[t].x and e[4] >= btns[t].y and e[3] <= btns[t].x+(btns[t].w-1) and e[4] <= btns[t].y+(btns[t].h-1) then
|
|
term.setCursorPos(1,1)
|
|
print("Yey")
|
|
term.setBackgroundColor(colors.gray)
|
|
btns[t].render(btns[t].x,btns[t].y)
|
|
end
|
|
end
|
|
elseif e[1] == "mouse_up" then
|
|
term.setBackgroundColor(colors.black)
|
|
setrender(scrl)
|
|
end
|
|
aw,ah = term.getSize()
|
|
if aw ~= ow or ah ~= oh then
|
|
setrender(scrl)
|
|
ow,oh = aw,ah
|
|
end
|
|
end
|
|
os.sleep(3) |