Advertisement
loepie

Untitled

Feb 8th, 2014
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Loepie78s Big Reactor Manager v0.1 based on :
  2. --FusionNrg's Big Reactor Manager v1.1
  3. --With wireless
  4. --last revised 2-6-2014
  5. -- designed for reactor to rear of computer with at least a 2x3 monitor on the top of the computer
  6. -- version 201402082301
  7.  
  8. function wrapreactor()
  9. --wrap reactor peripheral
  10.     reactor = peripheral.wrap("back")
  11.     reactor.setActive(true)
  12. end
  13.  
  14. function wrapmonitor()
  15. --applicable monitor variables
  16.     monitor = peripheral.wrap("right")
  17.  monitor.clear()
  18.     monitor.setCursorPos(1, 1)
  19.     monitor.write("System Initialized")
  20.     sleep(0,5)
  21.     width, height = monitor.getSize()
  22.     monitor.setCursorPos(1, 2)
  23.     monitor.write("Screen size:" ..width.." by:"..height)
  24.     sleep(0.5)
  25.     monitor.setCursorPos(1, 3)
  26.     monitor.write("Next step")
  27.     sleep(0.5)
  28. end
  29.  
  30. function wrapmodem()
  31. --applicable modem variables
  32.     monitor.setCursorPos(1, 4)
  33.     monitor.write("Opening Modem")
  34.     sleep(0.7)
  35.     monitor.write(".")
  36.     sleep(0.7)
  37.     monitor.write("..")
  38.     sleep(0.7)
  39.     monitor.write("...")
  40.     sleep(0.7)
  41.     monitor.write("....")
  42.     sleep(0.7)
  43.     modem = peripheral.wrap("top")
  44.     monitor.setCursorPos(1, 5)
  45.     monitor.write("Done!, next step")
  46.     sleep(0.7)
  47.     monitor.setCursorPos(1, 6)
  48.     monitor.write("Opening modemport 400 for Reactor Active")
  49.     modem.open(400)--Open channel 400 so that we can listen on it : Reactor Active
  50.     sleep(0.7)
  51.     monitor.setCursorPos(1, 7)
  52.     monitor.write("Opening modemport 401 for Reactor Temperature")
  53.     modem.open(401)--Open channel 401 so that we can listen on it : Reactor Temperature
  54.     sleep(0.7)
  55.     monitor.setCursorPos(1, 8)
  56.     monitor.write("Opening modemport 402 for Reactor Temperature")
  57.     modem.open(402)--Open channel 402 so that we can listen on it : Reactor Stored Energy
  58.     sleep(0.7)
  59.     monitor.setCursorPos(1, 9)
  60.     monitor.write("Opening modemport 403 for Reactor Produced Energy")
  61.     modem.open(403)--Open channel 403 so that we can listen on it : Reactor Produced Energy
  62.     sleep(0.7)
  63.     monitor.setCursorPos(1, 10)
  64.     monitor.write("Opening modemport 404 for Reactor  Control Rod Level")
  65.     modem.open(403)--Open channel 404 so that we can listen on it : Reactor Control Rod Level
  66.     sleep(0.7)
  67.     monitor.setCursorPos(1, 11)
  68.     monitor.write("All modem channels open, move along nothing to see here :)")
  69.     sleep(0.5)
  70. end
  71.  
  72. function configvars()
  73. --  pullInfo()
  74.     rods = 99
  75.     target = 8000000 -- adjustable between 0 and 10 million depending how much you want on hand
  76.     full = 10000000 -- full buffer size
  77. end
  78.  
  79. function pullInfo()-- pulling the latest from the reactor
  80.     ReactorTemp = reactor.getTemperature()
  81.     ReactorES = reactor.getEnergyStored()
  82.     ReactorLT = reactor.getEnergyProducedLastTick()
  83.     ReactorCRL = reactor.getControlRodLevel()
  84. end
  85.  
  86. function sendmodeminfo()
  87.     modem.transmit(401, 2, temp)
  88.     modem.transmit(402, 3, energy)
  89.     modem.transmit(403, 4, lastTick)
  90. end
  91.  
  92. function getmodeminfo()
  93.     local event400, modemSide400, senderChannel400, replyChannel400, Message400, senderDistance400 = os.pullEvent("modem_message") --channel 400 so : Reactor Active
  94.     ReactorActive = Message400
  95.     local event401, modemSide401, senderChannel401, replyChannel401, Message401, senderDistance401 = os.pullEvent("modem_message") --channel 401 so : Reactor Temperature
  96.     ReactorTemp = Message401
  97.     local event402, modemSide402, senderChannel402, replyChannel402, Message402, senderDistance402 = os.pullEvent("modem_message") --channel 402 so : Reactor Stored Energy
  98.     ReactorES = Message402
  99.     local event403, modemSide403, senderChannel403, replyChannel403, Message403, senderDistance403 = os.pullEvent("modem_message") --channel 403 so : Reactor Produced Energy
  100.     ReactorLT = Message403
  101.     local event404, modemSide404, senderChannel404, replyChannel404, Message404, senderDistance404 = os.pullEvent("modem_message") --channel 404 so : Reactor Control Rod Level
  102.     ReactorCRL = Message404
  103. end
  104.  
  105. function displayStats() -- display stats to the monitor in 2 columns
  106. --wrap monitor and pull sizing
  107.     monitor.clear()
  108.     monitor.setCursorPos(1, 10)
  109.     monitor.write("Temp")
  110.     monitor.setCursorPos(1, 11)
  111.     monitor.write("Buffer")
  112.     monitor.setCursorPos(10, 10)
  113.     monitor.write(ReactorTemp)
  114.     monitor.write(" Cel. ")
  115.     monitor.setCursorPos(10, 11)
  116.     monitor.write(math.floor(((ReactorES/full) * 100) + 0.5))
  117.     monitor.write(" %")
  118.     monitor.setCursorPos(1, 12)
  119.     monitor.write("Energy Last Tick: ")
  120.     monitor.setCursorPos(10, 12)
  121.     monitor.write(math.floor(ReactorLT + 0.5))
  122.     monitor.write("RF/t")
  123.     monitor.setCursorPos(1, 13)
  124.     monitor.write("Rod Insertion")
  125.     monitor.setCursorPos(10, 13)
  126.     monitor.write(ReactorCRL)
  127.     monitor.write(" %")
  128. end
  129.  
  130. function decrods()
  131.     rods=rods-1
  132.     if (rods < 0) then
  133.         rods=0
  134.         end
  135.     reactor.setAllControlRodLevels(rods)
  136. end
  137.  
  138. function incrods()
  139.     rods=rods+1
  140.     if (rods > 100) then
  141.         rods=100
  142.         end
  143.     reactor.setAllControlRodLevels(rods)
  144. end
  145.  
  146. function rodManagement()
  147. --if we're losing energy and below half or empty... pull rods out by 1%
  148.     if (reactor.getEnergyStored() < energy) and (energy < target) then
  149.         decrods()
  150.         end
  151. -- if energy is increasing and storage is over half  insert rods by 1%
  152.     if (reactor.getEnergyStored() > energy) and (energy > target) then
  153.         incrods()
  154.         end
  155.     if (reactor.getEnergyStored() == 0) then
  156.         decrods()
  157.         end
  158. end
  159.  
  160. function main()
  161.  x = 0
  162.     while (true) do
  163. --      pullInfo()
  164. --      sendmodeminfo()
  165.         getmodeminfo()
  166.         sleep(1)
  167.         displayStats()
  168. --      rodManagement()
  169.         sleep(1)
  170.     end
  171. end
  172.  
  173. --wrapreactor()
  174. wrapmonitor()
  175. configvars()
  176. displayStats()
  177. wrapmodem()
  178. displayStats()
  179. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement