Advertisement
Guest User

bigr

a guest
Dec 18th, 2014
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.69 KB | None | 0 0
  1. critLvl = 1000000
  2. lowLvl = 5000000
  3. highLvl = 9000000
  4.  
  5. -- I made some edits so that the status can be
  6. -- viewed on wireless pocket computers via
  7. -- wireless modem /Sudo
  8. modem = peripheral.wrap("right")
  9. modem.open(231)
  10.  
  11. function displayStatus(state, rodLvl,energy)
  12. --  displayStatusToMon(term,state,rodLvl,energy)
  13.   monitor = peripheral.wrap("monitor_4")
  14. print("displayonmon")
  15.     displayStatusToMon(monitor,state,rodLvl,energy)
  16. end
  17.  
  18. function displayStatusToMon(mon,state,rodLvl,energy)
  19. reactorState = false
  20. reactorState = state
  21.     mon.clear()
  22. print(reactorState)
  23.   print("Mon")
  24. --  sleep(5)
  25.       if mon.setTextScale ~= nil then
  26.     mon.setTextScale(1)
  27.   end
  28.   width, height = mon.getSize()
  29.   local width,height = mon.getSize()
  30.   if width < 15 or height < 5 then
  31.     if mon.setTextScale ~= nil then
  32.       mon.setTextScale(0.5)
  33. print(width..height)
  34.         else
  35.       return
  36.     end
  37.    
  38.     -- width, height = mon.getSize()
  39.      if width < 15 or height < 5 then
  40.        return
  41.      end
  42.    else
  43. print("test2")  
  44.    local scale =math.min(width / 16, height / 5, 5)
  45. --print("Scaling")
  46.  
  47.    scale = math.floor(scale * 2) / 2
  48.    
  49.    
  50.    if scale > 1 and mon.setTextScale ~= nil then
  51.      mon.setTextScale(scale)
  52.       width, height = mon.getSize()
  53.    end
  54.  end
  55. --print("test====="..state)
  56.  mon.setCursorPos(1,1)
  57.  mon.write("Reactor")
  58. --sleep(10)
  59.   mon.setCursorPos(1,3)
  60. --sleep(10)
  61.  mon.write("Status ")
  62. --print("state===")
  63. --sleep(10)
  64.  
  65.    if reactorState then
  66.    mon.setTextColor(colors.green)
  67. --   writeColor(mon, colors.green, "ON")
  68.    mon.write("ON")
  69.    mon.setTextColor(colors.white)
  70.  else
  71. --   writeColor(mon, color.red, "OFF")
  72.    mon.setTextColor(colors.red)
  73.    mon.write("OFF")
  74.   mon.setTextColor(colors.white)
  75.  end
  76.  
  77.  mon.setCursorPos(1,4)
  78.  mon.write("Rod Level; " ..rodLvl .. "%")
  79.  
  80.  mon.setCursorPos(1,5)
  81.  if width < 16 then
  82.    mon.write("Cell: ")
  83.  else
  84.    mon.write("Energy: ")
  85.  end
  86.  
  87.  local c
  88.  
  89.  if energy < critLvl then
  90.    c = colors.red
  91.  elseif energy > lowLvl then
  92.    c = colors.green
  93.  else
  94.    c = colors.orange
  95.  end
  96. mon.setTextColor(c)
  97. mon.write(string.format("%d", math.floor(energy/1000 +0.5)))
  98. -- writeColor(mon,c,string.format("%d",math.floor(energy/1000 +0.5)))
  99.  mon.write("kRF")
  100.  
  101. end
  102.  
  103.  
  104.      
  105.  
  106. function findReactor()
  107. --print("Check")
  108.     local pList = peripheral.getNames()
  109.   local i,name
  110.   for i, name in pairs(pList) do
  111.     if peripheral.getType(name) == "BigReactors-Reactor" then
  112.       return peripheral.wrap(name)
  113.     end
  114.   end
  115.  
  116.   print("Did MCNut break the reactor -- No man daves not here")
  117.   exit()
  118. end
  119.  
  120.  
  121.  
  122. function getRodLvl(curLvl)
  123.   local diffEnergy = highLvl - critLvl
  124.   local calcEnergy = curLvl - critLvl
  125.  
  126.   if calcEnergy < 0 then
  127.      calcEnergy = 0
  128.   elseif calcEnergy > diffEnergy then
  129.     calcEnergy = diffEnergy
  130.   end
  131.  
  132. --print(calcEnergy)  
  133. --print(diffEnergy)
  134.  
  135.    return math.floor(calcEnergy * 100 / diffEnergy * 100 +0.5)
  136. end
  137.  
  138. reactor = findReactor()
  139.  
  140. function sendStatus()
  141.   print("Waiting for message")
  142.   local e, s, c, r, m = os.pullEvent("modem_message")
  143.   --print(m)
  144.   --print(m == "reactorStatus")
  145.   if m == "reactorStatus" then
  146.     print("Sending status.")
  147.     local res = {}
  148.     res.active = reactor.getActive()
  149.     res.energyStored = reactor.getEnergyStored()
  150.     res.casingTemperature = reactor.getCasingTemperature()
  151.     res.fuelAmount = reactor.getFuelAmount()
  152.     res.fuelConsumption = reactor.getFuelConsumedLastTick()
  153.     res.energyProduced = reactor.getEnergyProducedLastTick()
  154.     modem.transmit(r, c, textutils.serialize(res))
  155.   end
  156. end
  157.  
  158. -- Can't pass arguments through parallel.waitForAny()
  159. -- Need a wrapper
  160. function wait()
  161.   os.sleep(5)
  162. end
  163.  
  164. --print("Startup")
  165. --reactor = findReactor()
  166. --print("Echecked Reactor")
  167.  
  168. while true do
  169. --print("Get Energy")
  170. --print(reactor.getEnergyStored())
  171.     energy = reactor.getEnergyStored()
  172.   if energy < lowLvl then
  173.     reactor.setActive(true)
  174.     rodLvl=0
  175.   elseif energy > highLvl then
  176.     --reactor.setActive(false)
  177.     rodLvl=80
  178.   elseif energy > lowLvl then
  179.     rodLvl = getRodLvl(energy)
  180.   end
  181.  
  182.   reactor.setAllControlRodLevels(rodLvl)
  183.  
  184.   print("Rod Level: "..rodLvl.."%")
  185. --print(reactor.getActive())  
  186. --sleep(10)
  187.   displayStatus(reactor.getActive(),rodLvl, energy)
  188.     if energy < critLvl then
  189.     print("We use To Much Energy its Ransak's Fault")
  190.   elseif energy > lowLvl then
  191.     print("We are Gravy")
  192.   else
  193.     print("Not To Much Not To Little")
  194.   end
  195. --  print(c
  196.    printEnergy = math.floor(energy/1000 +0.5)
  197.     print(printEnergy.."kRF")
  198. --   print(math.floor(energy/100.."kRF"))
  199.   parallel.waitForAny(wait, sendStatus)
  200.   term.clear()
  201.   term.setCursorPos(1,1)
  202. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement