-- FILLEDBOX
local function drawPixelInternal(xPos, yPos)
term.setCursorPos(xPos, yPos)
term.write(" ")
end
local tColourLookup = {}
for n = 1, 16 do
tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
end
function drawFilledBox(startX, startY, endX, endY, nColour)
if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~=
"number" or type(endY) ~= "number" or
(nColour ~= nil and type(nColour) ~= "number") then
error("Expected startX, startY, endX, endY, colour", 2)
end
startX = math.floor(startX)
startY = math.floor(startY)
endX = math.floor(endX)
endY = math.floor(endY)
if nColour then term.setBackgroundColor(nColour) end
if startX == endX and startY == endY then
drawPixelInternal(startX, startY)
return
end
local minX = math.min(startX, endX)
if minX == startX then
minY = startY
maxX = endX
maxY = endY
else
minY = endY
maxX = startX
maxY = startY
end
for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end
end
function has_value (tab, val)
for index, value in ipairs(tab) do
if value == val then
return true
end
end
return false
end
-- CODE
-- Variables
clicktocolor = {}
itinerari = {}
-- Load data
local h = fs.open("qlvdata-published", "r")
data = textutils.unserialize(h.readAll())
h.close()
function reset()
term.setBackgroundColor(colors.white)
term.clear()
local qlv = paintutils.loadImage("qlv")
--paintutils.drawImage(qlv, 2, 1)
for k, v in ipairs(data) do
clicktocolor[v.position.x.."_"..v.position.y] = data.color
local c = colors.lightGray
if v.type == "d" then
c = colors.gray
end
term.setBackgroundColor(c)
--drawPixelInternal(v.position.x, v.position.y)
end
term.setTextColor(colors.black)
print(textutils.serialize(clicktocolor))
term.setBackgroundColor(colors.white)
drawFilledBox(1, 1, 51, 1)
end
while true do
reset()
term.setCursorPos(12, 1)
term.setTextColor(colors.black)
term.setBackgroundColor(colors.white)
term.write("CREA ITINERARIO")
term.setCursorPos(1, 2)
term.write("Nome:")
term.setCursorPos(7, 2)
local name = read()
if name == "EXIT" then
break
end
term.setCursorPos(5, 3)
term.write("Seleziona gli enti da attivare")
enti = {}
while true do
local ev, bt, x, y = os.pullEvent("mouse_click")
if y > 17 then
break
end
local pos = x.."_"..y
if has_value(clicktocolor, pos) == true then
table.insert(enti, clicktocolor[pos])
term.setBackgroundColor(colors.red)
term.setCursorPos(x, y)
term.write(" ")
term.setBackgroundColor(colors.white)
end
end
table.insert(itinerari, {name=name,enti=enti})
end
local h2 = fs.open("qlvd", "w")
h2.write(textutils.serialize(itinerari))
h2.close()
print("DONEEEE")