sleep(10)
os.loadAPI("button")
m = peripheral.wrap("top")
m.clear()
rednet.open("bottom")
local page = 1
local pages = 0
local names = {}
local turtles = {}
local remove = false
function fillTurtles()
turtles[1] = 44
-- turtles[2] = 114
-- turtles[3] = 117
end
function fillTable()
m.clear()
button.clearTable()
local totalrows = 0
local numNames = 0
local col = 2
local row = 12
local countRow = 1
local currName = 0
local npp = 12 --names per page
for turt, data in pairs(names) do
for i,j in pairs(data) do
totalrows = totalrows+1
end
end
pages = math.ceil(totalrows/npp)
print(totalrows)
for turt, data in pairs(names) do
currName = 0
for slot, name in pairs(data) do
currName = currName + 1
if currName > npp*(page-1) and currName < npp*page+1 then
row = 4+(countRow)
names[turt][slot] = string.sub(name, 0, 17)
button.setTable(string.sub(name, 0, 17), runStuff, turt..":"..slot, col, col+17 , row, row)
if col == 21 then
col = 2
countRow = countRow + 2
else
col = col+19
end
end
end
end
button.setTable("Next Page", nextPage, "", 21, 38, 1, 1)
button.setTable("Prev Page", prevPage, "", 2, 19, 1, 1)
button.setTable("Refresh", checkNames, "", 2, 38, 19, 19)
button.label(15,3, "Page: "..tostring(page).." of "..tostring(pages))
button.screen()
end
function nextPage()
if page+1 <= pages then
page = page+1
end
fillTable()
sleep(0.25)
end
function prevPage()
if page-1 >= 1 then page = page-1 end
fillTable()
sleep(0.25)
end
function getNames()
names = {}
for x, y in pairs(turtles) do
names[y] = {}
rednet.send(y, "getNames")
local id, msg, dist = rednet.receive(2)
-- print(msg)
names[y] = textutils.unserialize(msg)
end
end
function removeIt()
remove = not remove
-- print(remove)
button.toggleButton("Remove Book")
end
function runStuff(info)
if remove == true then
removeBook(info)
else
openPortal(info)
end
end
function removeBook(info)
local turt, slot = string.match(info, "(%d+):(%d+)")
button.toggleButton(names[tonumber(turt)][tonumber(slot)])
data = "remove"..tostring(slot)
rednet.send(tonumber(turt), data)
rednet.receive()
button.toggleButton(names[tonumber(turt)][tonumber(slot)])
remove=false
button.toggleButton("Remove Book")
-- sleep(1)
checkNames()
end
function openPortal(info)
local turt,slot = string.match(info, "(%d+):(%d+)")
-- print(names[tonumber(turt)][tonumber(slot)])
button.toggleButton(names[tonumber(turt)][tonumber(slot)])
print(names[tonumber(turt)][tonumber(slot)])
data = "books"..tostring(slot)
rednet.send(tonumber(turt), data)
rednet.receive()
button.toggleButton(names[tonumber(turt)][tonumber(slot)])
end
function checkNames()
button.flash("Refresh")
for num, turt in pairs(turtles) do
rednet.send(turt, "checkSlots")
msg = ""
while msg ~= "done" do
id, msg, dist = rednet.receive()
if msg == "getName" then
m.clear()
m.setCursorPos(5, 12)
m.write("New book detected.")
m.setCursorPos(5, 14)
m.write("Please enter the name")
m.setCursorPos(5, 16)
m.write("On the computer")
m.setCursorPos(5, 18)
m.write("<<----")
term.clear()
term.write("Please enter a name for the new book: ")
name = read()
rednet.send(id, name)
end
end
end
getNames()
fillTable()
end
function getClick()
event, side, x,y = os.pullEvent()
if event == "monitor_touch" then
button.checkxy(x,y)
elseif event == "redstone" then
print("redstone")
sleep(5)
checkNames()
end
end
fillTurtles()
fillTable()
checkNames()
while true do
getClick()
-- checkNames()
end
Comments