Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local event = require('event')
- local sides = require('sides')
- local term = require('term')
- local com = require('component')
- -- Константы --
- TRACK_SIDE = 'right'
- -- Цвета --
- backcolor = 0x000000
- forecolor = 0xFFFFFF
- infocolor = 0x0066FF
- errorcolor = 0xFF0000
- helpcolor = 0x006600
- graycolor = 0x080808
- goldcolor = 0xFFDF00
- -- *** --
- -- списки этажей (пульты и контроллеры)
- local scr = {}
- local red = {}
- -- первый экран - цокольный этаж
- local cg = com.gpu
- table.insert(scr, com.screen.address)
- width, height = cg.getResolution()
- cols = 1
- rows = 1
- -- добавляем еще один этаж
- function add(screen, redstone)
- if screen ~= nil then
- table.insert(scr, screen)
- cols = math.ceil(math.sqrt(#scr/3))
- rows = math.ceil(#scr/cols)
- for c=1, #scr do
- cg.bind(scr[c])
- drawButtons()
- end
- end
- if redstone ~= nil then
- table.insert(red, redstone)
- end
- end
- -- отправляем вагонетку на нужный этаж
- function send(number)
- for c=1, #red do
- local redstone = com.proxy(red[c])
- if redstone ~= nil then
- if c < number then
- redstone.setOutput(sides[TRACK_SIDE], 1)
- else
- redstone.setOutput(sides[TRACK_SIDE], 0)
- end
- end
- end
- end
- -- динамично рисуем кнопки по числу этажей
- function drawButtons()
- cg.setResolution(cols*6, rows)
- term.clear()
- cg.setBackground(helpcolor)
- for x = 0, cols-1 do
- for y = 0, rows-1 do
- local num = 1+x*rows+y
- if num > #scr then break end
- cg.set(1+x*6, 1+y, '[ ]')
- cg.set(3+x*6, 1+y, tostring(num))
- end
- end
- cg.setBackground(backcolor)
- end
- drawButtons(11)
- -- работаем
- while true do
- name, addres, t, y = event.pull(10)
- if name == 'key_down' then break
- elseif name == 'component_added' then
- if t == 'screen' then
- add(addres, nil)
- elseif t == 'redstone' then
- add(nil, addres)
- end
- elseif name == 'touch' then
- local x = math.floor(t/6)
- local num = x*rows+y
- send(num)
- end
- end
- cg.setResolution(width, height)
- term.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement