Advertisement
loepie

Untitled

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