Advertisement
TitanChase

Untitled

Oct 24th, 2014
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. local settings = {state = "", fueltemp = "", casingtemp = "", fuelmix = "", fuelamount = "" , energyamount = "", redstone = ""}
  2. local values = {state = false, fueltemp = false, casingtemp = false, fuelmix = false, fuelamount = false , energyamount = false, redstone = false}
  3. local monitors = {}
  4. local modem
  5. local messages = {}
  6. local turnonSetting = {}
  7.  
  8. function bindSetting(setting, side, invert)
  9. for key, value in pairs(settings) do
  10. if(value == side) then
  11. print("Side already Bound!")
  12. shell.exit()
  13. end
  14. end
  15. if(settings[setting] == nil) then
  16. print("Setting not Found!")
  17. print("Available Settings:")
  18. for key, value in pairs(settings) do
  19. print(tostring(key .. "."))
  20. end
  21. shell.exit()
  22. else
  23. settings[setting] = {side, invert}
  24. print("Setting " .. setting .. " to the " .. side .. "side!");
  25. end
  26. end
  27.  
  28. function bindModem(side)
  29. type = peripheral.getType(side)
  30. if(type == "modem") then
  31. modem = side
  32. else
  33. print("No Modem Found at the " .. side .. " side!")
  34. shell.exit()
  35. end
  36. end
  37.  
  38. function bindMonitor(name, setting)
  39. if(settings[setting] == nil) then
  40. print("Setting not Found!")
  41. print("Available Settings:")
  42. for key, value in pairs(settings) do
  43. print(tostring(key .. "."))
  44. end
  45. shell.exit()
  46. else
  47. mon = peripheral.wrap(name)
  48. if(mon == nil) then
  49. print("Failed to find monitor: " .. name)
  50. else
  51. table.insert(monitors, {setting, mon})
  52. end
  53. end
  54. end
  55.  
  56.  
  57. function setTurnOnSetting(setting, value)
  58. turnonSetting = {setting , value}
  59. end
  60.  
  61. function getSetting(setting)
  62. return settings[setting][1]
  63. end
  64.  
  65. function getInvert(setting)
  66. return settings[setting][2]
  67. end
  68.  
  69. function setValue(set, value)
  70. values[set] = value
  71. end
  72.  
  73. function getValue(set)
  74. return values[set]
  75. end
  76.  
  77. function canMonitorSetting(setting)
  78. return settings[setting] ~= ""
  79. end
  80.  
  81. function run()
  82. for key, value in pairs(settings) do
  83. if(canMonitorSetting(key) and key ~= "state") then
  84. values[key] = rs.getInput(tostring(value[1]))
  85. end
  86. end
  87. turnOn()
  88. sendUpdates()
  89.  
  90. end
  91.  
  92. function turnOn()
  93. if(values[turnonSetting[1]] == turnonSetting[2]) then
  94. values["state"] = true;
  95. rs.setOutput(settings["state"][1], true)
  96. else
  97. values["state"] = false;
  98. rs.setOutput(settings["state"][1], false)
  99. end
  100.  
  101. end
  102.  
  103.  
  104. function sendUpdates()
  105. rednet.open(modem)
  106. for key, value in pairs(values) do
  107. if(settings[key] ~= "") then
  108. rednet.broadcast({key, value})
  109. end
  110. end
  111. rednet.close(modem)
  112. end
  113.  
  114. function receiveUpdates()
  115. rednet.open(modem)
  116. senderid, message = rednet.receive()
  117. print("Message Received! {" .. message[1] .. ", " .. tostring(message[2]) .. "}")
  118. rednet.close(modem)
  119. table.insert(messages, message)
  120. end
  121.  
  122. function decodeUpdates()
  123. for i=1, #messages do
  124. print("Decoding message {" .. messages[i][1] .. ", " .. tostring(messages[i][2]) .. "}")
  125. values[messages[i][1]] = messages[i][2]
  126. end
  127. messages = {}
  128. end
  129.  
  130. function updateMonitors()
  131. for i=1,#monitors do
  132. if(values[monitors[i][1]]) then
  133. monitors[i][2].setBackgroundColor(colors.green)
  134. monitors[i][2].write("0")
  135. monitors[i][2].clear()
  136. monitors[i][2].clear()
  137. else
  138. monitors[i][2].setBackgroundColor(colors.red)
  139. monitors[i][2].write("0")
  140. monitors[i][2].clear()
  141. monitors[i][2].clear()
  142. end
  143. end
  144. end
  145.  
  146. function statemonitor()
  147. while true do
  148. receiveUpdates()
  149. decodeUpdates()
  150. updateMonitors()
  151. end
  152. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement