MrHerobrine

[ComputerCraft] Elevator interface

Jan 30th, 2022
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.09 KB | None | 0 0
  1. local side = "top"
  2. local comp = peripheral.wrap(side)
  3. local mon = peripheral.find("monitor")
  4.  
  5. local levels = {{"work",0x400},{"test",0x4},{"hub",0x40}}
  6. local crds = {2,2,9,1} -- координаты отрисовки списка этажей
  7. -- startX,startY,width,height -- положение по Х и Y, ширина и высота
  8.  
  9. local level = 1
  10.  
  11. local function fill(colr)           -- заполняет к ебеням всё, что видит указанным цветом
  12.     mon.setBackgroundColor(colr)
  13.     mon.clear()
  14. end
  15.  
  16. local function draw(startX,startY,endX,endY,colr)   --рисует прямоугольник от и до указанных координат
  17.     mon.setBackgroundColor(colr)
  18.     for xcord=startX, endX do
  19.         for ycord=startY, endY do
  20.             mon.setCursorPos(xcord, ycord) mon.write(" ")
  21.         end
  22.     end
  23. end
  24.  
  25. local function levelDraw(startX,startY,width,height)
  26.     local lvlsCount = #levels
  27.     for i=0, lvlsCount-1 do
  28.         draw(startX,startY+(i*3),startX+width,(startY+height)+(i*3),levels[i+1][2])
  29.         for y=0, i do
  30.             mon.setCursorPos(startX+y, startY+(i*3)) mon.setTextColour(0x8000) mon.write("\138")
  31.         end
  32.         mon.setCursorPos(startX+1, startY+1+(i*3)) mon.setTextColour(0x1) mon.write(levels[i+1][1])
  33.     end
  34. end
  35.  
  36. local function elevatorIcon(level)
  37.     draw(13,2,14,9,0x8000)
  38.     mon.setTextColour(0x1)
  39.     for i=0, level do
  40.         mon.setCursorPos(13,2+i) mon.setTextColour(0x1) mon.write("\136") mon.setCursorPos(14,2+i) mon.write("\145")
  41.     end
  42.     mon.setTextColour(0x1000) mon.setCursorPos(13,2+level) mon.write("\8") mon.setCursorPos(14,2+level) mon.write("\8")
  43. end
  44.  
  45.  
  46. mon.setTextScale(0.5)
  47. fill(0x80)  -- чистим экран
  48.     mon.setCursorPos(5, 1) mon.setTextColour(0x1) mon.write("Elevator")
  49. levelDraw(crds[1],crds[2],crds[3],crds[4])
  50. draw(13,2,14,9,0x8000)
  51.  
  52.  
  53. while true do
  54.   local event, side, xclick, yclick = os.pullEvent("monitor_touch")
  55.   local lvlsCount = #levels
  56.     if (xclick >=crds[1]) and (xclick<=crds[1]+crds[3]) then
  57.         for i=0, lvlsCount do
  58.             if yclick>=(crds[2]+(i*3)) and (yclick<=((crds[2]+crds[4])+(i*3))) then
  59.                 elevatorIcon(1+(3*i))
  60.             end
  61.         end
  62.     end
  63. end
Advertisement
Add Comment
Please, Sign In to add comment