SD_Ecliptica

Kensington Rednet

Dec 8th, 2014
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.28 KB | None | 0 0
  1. local MAX_POWER = 10000000 * 4
  2. local POWER_LENGTH = 60
  3. local bridge = peripheral.wrap("right")
  4. local power1 = 0
  5. local power2 = 0
  6. local power3 = 0
  7. local power4 = 0
  8. local reactor = "CLEAR"
  9. local reactorState = "OFF"
  10. local powerPercent = 0
  11. local line = 1
  12. local sender = "default"
  13. local message = "default"
  14. local protocol = "default"
  15. local m = peripheral.wrap("bottom")
  16. print("Initializing...")
  17.  
  18. -- set up modem
  19. local PORT1 = 47838
  20. local PORT2 = 47839
  21. local PORT3 = 47840
  22. local PORT4 = 47841
  23. local PORT5 = 47842
  24. local PORT6 = 47843
  25. local modem = peripheral.wrap("top")
  26. modem.open(PORT1)
  27. modem.open(PORT2)
  28. modem.open(PORT3)
  29. modem.open(PORT4)
  30. modem.open(PORT5)
  31. modem.open(PORT6)
  32. print("Setting up modem...")
  33.  
  34. -- set up terminal glasses colors
  35. local nCol = {}
  36. nCol.red = 0xff0000
  37. nCol.blue = 0x7dd2e4
  38. nCol.yellow = 0xffff4d
  39. nCol.green = 0x4dff4d
  40. nCol.gray = 0xe0e0e0
  41. nCol.grey = 0xe0e0e0
  42. nCol.lime = 0x55ff55
  43. nCol.black = 0x000000
  44. nCol.white = 0xffffff
  45.  
  46. m.clear()
  47. print("Initialization finished.")
  48.  
  49. -- main loop
  50. while true do
  51.     -- clear the display
  52.     bridge.clear()
  53.    
  54.     -- display welcome message
  55.     welcome = "Yardle OS Loaded"
  56.     text = bridge.addText(5, 5, welcome, nCol.blue)
  57.    
  58.     -- display current time
  59.     timeRaw = textutils.formatTime(os.time(), true)
  60.     bridge.addText(5, 15, "IGT: ", nCol.lime)
  61.     bridge.addText(25, 15, timeRaw, nCol.white)
  62.     m.setTextColor(colors.lime)
  63.     m.setCursorPos(1, 1)
  64.     m.write("                ")
  65.     m.setCursorPos(1, 1)
  66.     m.write("Time: " .. timeRaw)
  67.    
  68.     -- display current day
  69.     bridge.addText(55, 15, "Day: " , nCol.lime)
  70.     bridge.addText(78, 15, tostring(os.day()), nCol.white)
  71.     m.setTextColor(colors.blue)
  72.     m.setCursorPos(1, 2)
  73.     m.write("Day: " .. os.day())
  74.    
  75.     -- connected users
  76.     bridge.addText(5, 55, "Connections:", nCol.white)
  77.     local users = bridge.getUsers()
  78.     yLoc = 65
  79.     for key, value in pairs(users) do
  80.         bridge.addText(5, yLoc, "- " .. value, nCol.blue)
  81.         yLoc = yLoc + 10
  82.     end
  83.    
  84.     -- print power
  85.     powerPercent = (power1 + power2 + power3 + power4) / MAX_POWER
  86.     bridge.addText(5, 25, "Power: ", nCol.lime)
  87.     local barLength = POWER_LENGTH * powerPercent
  88.     --bridge.addText(42, 26, powerPercent * 100 .. "%", nCol.white)
  89.     bridge.addBox(42, 26, barLength, 5, nCol.yellow, .5)
  90.     bridge.addBox(42 + barLength, 26, POWER_LENGTH - barLength, 5, nCol.black, .5)
  91.  
  92.     powPercent1 = tostring(math.floor(power1 / 100000))
  93.     powPercent2 = tostring(math.floor(power2 / 100000))
  94.     powPercent3 = tostring(math.floor(power3 / 100000))
  95.     powPercent4 = tostring(math.floor(power4 / 100000))
  96.     bridge.addText(5, 35, "     |     |     | ", nCol.red)
  97.    
  98.     barLength = powPercent1 / 100 * 20
  99.     bridge.addBox(5, 36, barLength, 5, nCol.white, .5)
  100.     bridge.addBox(5 + barLength, 36, 20 - barLength, 5, nCol.black, .5)
  101.    
  102.     barLength = powPercent2 / 100 * 20
  103.     bridge.addBox(27, 36, barLength, 5, nCol.white, .5)
  104.     bridge.addBox(27 + barLength, 36, 20 - barLength, 5, nCol.black, .5)
  105.  
  106.     barLength = powPercent3 / 100 * 20
  107.     bridge.addBox(49, 36, barLength, 5, nCol.white, .5)
  108.     bridge.addBox(49 + barLength, 36, 20 - barLength, 5, nCol.black, .5)
  109.  
  110.     barLength = powPercent4 / 100 * 20
  111.     bridge.addBox(72, 36, barLength, 5, nCol.white, .5)
  112.     bridge.addBox(72 + barLength, 36, 20 - barLength, 5, nCol.black, .5)
  113.  
  114.     --bridge.addText(38, 35, tostring(powPercent1), nCol.white)
  115.     --bridge.addText(61, 35, tostring(powPercent2), nCol.white)
  116.     --bridge.addText(81, 35, tostring(powPercent3), nCol.white)
  117.     --bridge.addText(105, 35, tostring(powPercent4), nCol.white)
  118.  
  119.     bridge.addText(8, 42, "reactor", nCol.yellow)
  120.     bridge.addText(55, 42, "primary", nCol.yellow)
  121.  
  122.     m.setCursorPos(1, 3)
  123.     m.setTextColor(colors.yellow)
  124.     m.write("Power: " .. powerPercent * 100 .. "%")
  125.     m.setCursorPos(1, 4)
  126.     m.setTextColor(colors.white)
  127.     m.write(powPercent1 .. "%|" .. powPercent2 .. "%|" .. powPercent3 .. "%|" .. powPercent4 .. "%")
  128.  
  129.     -- write reactor status
  130.     if reactorState == "OFF" then
  131.     bridge.addText(4, 240, "Reactor powered off.", nCol.red)
  132.     elseif reactorState == "EMERGENCY" then
  133.     bridge.addText(170, 120, "EMERGENCY REACTOR SHUTDOWN", nCol.red)
  134.     elseif reactor == "CLEAR" then
  135.     bridge.addText(4, 240, "Reactor status nominal.", nCol.green)
  136.     elseif reactor == "WARNING" then
  137.     bridge.addText(170, 120, "WARNING: REACTOR OVERHEATING", nCol.red)
  138.     end
  139.  
  140.     -- update power and reactor info from wireless modem
  141.     local event, modemSide, senderChannel,
  142.         replyChannel, message, senderDistance = os.pullEvent("modem_message")
  143.     if (senderChannel == PORT1) then
  144.         power1 = message
  145.     elseif (senderChannel == PORT2) then
  146.         power2 = message
  147.     elseif (senderChannel == PORT3) then
  148.         power3 = message
  149.     elseif (senderChannel == PORT4) then
  150.         power4 = message
  151.     elseif (senderChannel == PORT5) then --nuclear reactor
  152.     reactor = message
  153.     elseif (senderChannel == PORT6) then
  154.     reactorState = message
  155.     end
  156.     print("Power: (" .. power1 .. ", " .. power2 .. ", " .. power3 .. ", " .. power4 .. ", " .. powerPercent * 100 .. "%)")
  157.     print("Reactor: " .. reactor)
  158.     -- timeout to prevent flooding
  159.     os.sleep(.1)
  160. end
Advertisement
Add Comment
Please, Sign In to add comment