Advertisement
MagmaLP

Lua CC Scroll Bar Test

Nov 16th, 2023 (edited)
720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.70 KB | None | 0 0
  1. local list = {
  2.     "Eintrag 1", "Eintrag 2", "Eintrag 3", "Eintrag 4", "Eintrag 5",
  3.     "Eintrag 6", "Eintrag 7", "Eintrag 8", "Eintrag 9", "Eintrag 10",
  4.     "Eintrag 11", "Eintrag 12", "Eintrag 13", "Eintrag 14", "Eintrag 15",
  5.     "Eintrag 16", "Eintrag 17", "Eintrag 18", "Eintrag 19", "Eintrag 20",
  6.     "Eintrag 21", "Eintrag 22", "Eintrag 23", "Eintrag 24", "Eintrag 25",
  7.     "Eintrag 26", "Eintrag 27", "Eintrag 28", "Eintrag 29", "Eintrag 30",
  8.     "Eintrag 31", "Eintrag 32", "Eintrag 33", "Eintrag 34", "Eintrag 35",
  9.     "Eintrag 36", "Eintrag 37", "Eintrag 38", "Eintrag 39", "Eintrag 40",
  10.     "Eintrag 41", "Eintrag 42", "Eintrag 43", "Eintrag 44", "Eintrag 45",
  11.     "Eintrag 46", "Eintrag 47", "Eintrag 48", "Eintrag 49", "Eintrag 50",
  12. }
  13.  
  14. local screenHeight = 14 -- Höhe des Bildschirms
  15. local screenWidth = 51 -- Breite des Bildschirms
  16. local xPos = 3 -- Start-X-Position der Liste
  17. local yPos = 3 -- Start-Y-Position der Liste
  18. local currentPos = 1 -- Startposition
  19. local lastIndex = #list
  20.  
  21. local scrollBarStart = 3 - 1 -- Startposition des Scrollbalkens
  22. local scrollBarEnd = scrollBarStart + screenHeight - 1-- Endposition des Scrollbalkens
  23.  
  24. local function clearScreen()
  25.     term.setBackgroundColor(colors.black)
  26.     term.setTextColor(colors.white)
  27.     term.clear()
  28. end
  29.  
  30. local function displayList()
  31.     clearScreen()
  32.  
  33.     local visibleEntries = math.min(lastIndex - currentPos + 1, screenHeight)
  34.  
  35.     for i = currentPos, currentPos + visibleEntries - 1 do
  36.         term.setCursorPos(xPos, yPos + i - currentPos)
  37.         print(list[i])
  38.     end
  39.  
  40.     -- Scrollbalken
  41.     local scrollBarHeight = math.ceil(screenHeight / lastIndex * visibleEntries)
  42.     local scrollPos = math.ceil((currentPos / lastIndex) * (screenHeight - scrollBarHeight))
  43.  
  44.     if scrollBarHeight > 0 then
  45.         for i = scrollBarStart, scrollBarEnd do
  46.             term.setCursorPos(screenWidth, i)
  47.             if i >= scrollBarStart + scrollPos and i < scrollBarStart + scrollPos + scrollBarHeight then
  48.                 term.setBackgroundColor(colors.lightGray)
  49.             else
  50.                 term.setBackgroundColor(colors.black)
  51.             end
  52.             term.write(" ")
  53.         end
  54.     end
  55. end
  56.  
  57. local function scrollDown()
  58.     if currentPos < lastIndex - screenHeight + 1 then
  59.         currentPos = currentPos + 1
  60.         displayList()
  61.     end
  62. end
  63.  
  64. local function scrollUp()
  65.     if currentPos > 1 then
  66.         currentPos = currentPos - 1
  67.         displayList()
  68.     end
  69. end
  70.  
  71. displayList()
  72.  
  73. while true do
  74.     local event, key = os.pullEvent("key")
  75.     if key == keys.up then
  76.         scrollUp()
  77.     elseif key == keys.down then
  78.         scrollDown()
  79.     elseif key == keys.q then
  80.         break
  81.     end
  82. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement