Arc13

Virtual SevSeg API

Oct 24th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.58 KB | None | 0 0
  1. local numbers = {}
  2. numbers[0] = {1, 1, 1, 0, 1, 1, 1}
  3. numbers[1] = {0, 0, 1, 0, 0, 1, 0}
  4. numbers[2] = {1, 0, 1, 1, 1, 0, 1}
  5. numbers[3] = {1, 0, 1, 1, 0, 1, 1}
  6. numbers[4] = {0, 1, 1, 1, 0, 1, 0}
  7. numbers[5] = {1, 1, 0, 1, 0, 1, 1}
  8. numbers[6] = {1, 1, 0, 1, 1, 1, 1}
  9. numbers[7] = {1, 0, 1, 0, 0, 1, 0}
  10. numbers[8] = {1, 1, 1, 1, 1, 1, 1}
  11. numbers[9] = {1, 1, 1, 1, 0, 1, 1}
  12.  
  13. function initSevenSeg(startX, startY, nSize, nInactiveColor)
  14.   startX, startY, nSize, nInactiveColor = tonumber(startX), tonumber(startY), tonumber(nSize), tonumber(nInactiveColor)
  15.  
  16.   if not nSize or type(startX) ~= "number" or type(startY) ~= "number" or type(nSize) ~= "number" then
  17.     return false, "initSevenSeg(startX, startY, nSize[, nInactiveColor])"
  18.   end
  19.  
  20.   local oldBgColor = term.getBackgroundColor()
  21.  
  22.   nInactiveColor = nInactiveColor or colors.lightGray
  23.  
  24.   paintutils.drawLine(startX + 1, startY, startX + nSize, startY, nInactiveColor)
  25.   paintutils.drawLine(startX, startY + 1, startX, startY + nSize, nInactiveColor)
  26.   paintutils.drawLine((startX + 1) + nSize, startY + 1, (startX + 1) + nSize, startY + nSize, nInactiveColor)
  27.   paintutils.drawLine(startX + 1, (startY + 1) + nSize, startX + nSize, (startY + 1) + nSize, nInactiveColor)
  28.   paintutils.drawLine(startX, (startY + 2) + nSize, startX, (startY + 1) + nSize * 2, nInactiveColor)
  29.   paintutils.drawLine((startX + 1) + nSize, (startY + 2) + nSize, (startX + 1) + nSize, (startY + 1) + nSize * 2, nInactiveColor)
  30.   paintutils.drawLine(startX + 1, (startY + 2) + nSize * 2, startX + nSize, (startY + 2) + nSize * 2, nInactiveColor)
  31.  
  32.   term.setBackgroundColor(oldBgColor)
  33.  
  34.   return true
  35. end
  36.  
  37. function drawSevenSeg(nNumber, startX, startY, nSize, nActiveColor, nInactiveColor)
  38.   nNumber, startX, startY, nSize, nActiveColor, nInactiveColor = tonumber(nNumber), tonumber(startX), tonumber(startY), tonumber(nSize), tonumber(nActiveColor), tonumber(nInactiveColor)
  39.  
  40.   if not nSize or type(nNumber) ~= "number" or type(startX) ~= "number" or type(startY) ~= "number" or type(nSize) ~= "number" then
  41.     return false, "drawSevenSeg(nNumber, startX, startY, nSize[, nActiveColor, nInactiveColor])"
  42.   end
  43.  
  44.   local oldBgColor = term.getBackgroundColor()
  45.  
  46.   nActiveColor = nActiveColor or colors.red
  47.   nInactiveColor = nInactiveColor or colors.lightGray
  48.  
  49.   if nNumber > 9 then
  50.     if nNumber % 9 == 0 then
  51.       nNumber = 9
  52.     else
  53.       nNumber = nNumber % 9
  54.     end
  55.   end
  56.  
  57.   initSevenSeg(startX, startY, nSize, nInactiveColor)
  58.  
  59.   if numbers[nNumber][1] == 1 then
  60.     paintutils.drawLine(startX + 1, startY, startX + nSize, startY, nActiveColor)
  61.   end
  62.   if numbers[nNumber][2] == 1 then
  63.     paintutils.drawLine(startX, startY + 1, startX, startY + nSize, nActiveColor)
  64.   end
  65.   if numbers[nNumber][3] == 1 then
  66.     paintutils.drawLine((startX + 1) + nSize, startY + 1, (startX + 1) + nSize, startY + nSize, nActiveColor)
  67.   end
  68.   if numbers[nNumber][4] == 1 then
  69.     paintutils.drawLine(startX + 1, (startY + 1) + nSize, startX + nSize, (startY + 1) + nSize, nActiveColor)
  70.   end
  71.   if numbers[nNumber][5] == 1 then
  72.    paintutils.drawLine(startX, (startY + 2) + nSize, startX, (startY + 1) + nSize * 2, nActiveColor)
  73.   end
  74.   if numbers[nNumber][6] == 1 then
  75.    paintutils.drawLine((startX + 1) + nSize, (startY + 2) + nSize, (startX + 1) + nSize, (startY + 1) + nSize * 2, nActiveColor)
  76.   end
  77.   if numbers[nNumber][7] == 1 then
  78.     paintutils.drawLine(startX + 1, (startY + 2) + nSize * 2, startX + nSize, (startY + 2) + nSize * 2, nActiveColor)
  79.   end
  80.  
  81.   term.setBackgroundColor(oldBgColor)
  82.  
  83.   return true, numbers[nNumber]
  84. end
  85.  
  86. function drawMultipleNumbers(nNumber, startX, startY, nSize, nActiveColor, nInactiveColor)
  87.   nNumber, startX, startY, nSize, nActiveColor, nInactiveColor = tonumber(nNumber), tonumber(startX), tonumber(startY), tonumber(nSize), tonumber(nActiveColor), tonumber(nInactiveColor)
  88.  
  89.   if not nSize or type(nNumber) ~= "number" or type(startX) ~= "number" or type(startY) ~= "number" or type(nSize) ~= "number" then
  90.     return false, "drawMultipleNumbers(nNumber, startX, startY, nSize[, nActiveColor, nInactiveColor])"
  91.   end
  92.  
  93.   local oldBgColor = term.getBackgroundColor()
  94.  
  95.   local sNumber = tostring(nNumber)
  96.  
  97.   for i = 1, string.len(sNumber) do
  98.     if i == 1 then
  99.       drawSevenSeg(tonumber(sNumber:sub(1, 1)), startX, startY, nSize, nActiveColor, nInactiveColor)
  100.     else
  101.       drawSevenSeg(tonumber(sNumber:sub(i, i)), (((nSize + 2) + startX - 1) + (2 + (((nSize + 2) + startX - 1)) * (i - 2))), startY, nSize, nActiveColor, nInactiveColor)
  102.     end
  103.   end
  104.  
  105.   term.setBackgroundColor(oldBgColor)
  106.  
  107.   return true, nNumber
  108. end
Advertisement
Add Comment
Please, Sign In to add comment