Advertisement
1lann

Rednet Spam Monitor index

Aug 10th, 2014
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.77 KB | None | 0 0
  1. local activeError = nil
  2. local w, h = term.getSize()
  3. local spamData = {}
  4. local ready = false
  5.  
  6. local function drawHeader()
  7.     term.setBackgroundColor(colors.lightGray)
  8.     term.clear()
  9.     term.setCursorPos(1, 1)
  10.     term.setBackgroundColor(colors.white)
  11.     term.clearLine()
  12.     term.setCursorPos(1, 2)
  13.     term.clearLine()
  14.     term.setTextColor(colors.cyan)
  15.     center("Rednet Spam Monitor by 1lann")
  16.     term.setCursorPos(1, 3)
  17.     term.clearLine()
  18. end
  19.  
  20. local function drawBottomBar(err)
  21.     term.setBackgroundColor(colors.gray)
  22.     if err then
  23.         activeError = err
  24.         term.setCursorPos(1, h)
  25.         term.setTextColor(colors.red)
  26.         term.clearLine()
  27.         center(err)
  28.     else
  29.         activeError = nil
  30.         term.setCursorPos(1, h)
  31.         term.clearLine()
  32.         term.setTextColor(colors.green)
  33.         center("Connected to the server!")
  34.     end
  35. end
  36.  
  37. local function drawData(data)
  38.     term.setBackgroundColor(colors.lightGray)
  39.     term.clear()
  40.     drawHeader()
  41.     drawBottomBar(activeError)
  42.     term.setBackgroundColor(colors.lightGray)
  43.     if #data > 0 then
  44.         for k,v in pairs(data) do
  45.             term.setBackgroundColor(colors.white)
  46.             local baseY = (4 * (k - 1) + 1) + 4
  47.             term.setCursorPos(2, baseY)
  48.             term.write(string.rep(" ", w - 4))
  49.             term.setCursorPos(3, baseY)
  50.             term.setTextColor(colors.red)
  51.             local time = "Ongoing..."
  52.             if v.time > 7 then
  53.                 time = math.floor(v.time) .. " secs ago"
  54.             end
  55.             term.write("Computer ID: " .. v.id .. " | Time: " .. time)
  56.             term.setCursorPos(2, baseY + 1)
  57.             term.write(string.rep(" ", w - 4))
  58.             term.setCursorPos(3, baseY + 1)
  59.             term.setTextColor(colors.lightBlue)
  60.             if v.locationA and v.locationB then
  61.                 term.write(v.locationA)
  62.                 term.setCursorPos(2, baseY + 2)
  63.                 term.write(string.rep(" ", w - 4))
  64.                 term.setCursorPos(3, baseY + 2)
  65.                 term.write(v.locationB)
  66.             else
  67.                 term.write(v.locationA)
  68.             end
  69.         end
  70.     else
  71.         term.setCursorPos(1, 9)
  72.         term.setTextColor(colors.lightBlue)
  73.         center("The skies are all clear!")
  74.         term.setCursorPos(1, 10)
  75.         center("No spam to be seen")
  76.     end
  77. end
  78.  
  79. local serverLoop = function()
  80.     while true do
  81.         local rawData = firewolf.query("get")
  82.         if rawData then
  83.             local data = textutils.unserialize(rawData)
  84.             if type(data) == "table" then
  85.                 spamData = data
  86.                 ready = true
  87.                 drawData(data)
  88.             else
  89.                 drawBottomBar("Server error!")
  90.             end
  91.         else
  92.             drawBottomBar("Could not connect to server! Retrying...")
  93.         end
  94.         sleep(5)
  95.     end
  96. end
  97.  
  98. local updateLoop = function()
  99.     while true do
  100.         for k,v in pairs(spamData) do
  101.             spamData[k].time = spamData[k].time + 1
  102.         end
  103.         if ready then
  104.             drawData(spamData)
  105.         else
  106.             term.setCursorPos(1, 9)
  107.             term.setBackgroundColor(colors.lightGray)
  108.             term.setTextColor(colors.lightBlue)
  109.             center("Connecting...")
  110.         end
  111.         sleep(1)
  112.     end
  113. end
  114.  
  115. drawHeader()
  116. parallel.waitForAny(serverLoop, updateLoop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement