Advertisement
virtualdxs

Untitled

Sep 3rd, 2021
1,343
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --
  2. -- Remote monitor component for reactor control program
  3. --
  4. -- Author: VirtualDXS
  5. --
  6. -- History:
  7. --     v0.1, 2021-09-03
  8. --         First version
  9.  
  10. threshold = 0.6
  11. mon = peripheral.wrap("monitor_1")
  12.  
  13. cells = {
  14.     peripheral.wrap("thermal:energy_cell_1"),
  15.     peripheral.wrap("thermal:energy_cell_2"),
  16.     peripheral.wrap("thermal:energy_cell_3"),
  17.     peripheral.wrap("thermal:energy_cell_4")
  18. }
  19.  
  20. function writeMonStatus (state,fraction)
  21.   local pct = math.floor(fraction*10000)/100
  22.   mon.clear()
  23.   if mon.setTextScale ~= nil then
  24.     mon.setTextScale(1)
  25.     local width, height = mon.getSize()
  26.     if width < 15 or height < 5 then -- Small monitor - scale down
  27.       mon.setTextScale(0.5)
  28.     else -- Large monitor - scale up
  29.       local scale = math.min(width / 14, height / 2, 5)
  30.       scale = math.floor(scale * 2) / 2 -- multiple of 0.5
  31.       mon.setTextScale(scale)
  32.     end
  33.   end
  34.   mon.setCursorPos(1,1)
  35.   mon.write("State: " .. (state and "On" or "Off"))
  36.   mon.setCursorPos(1,2)
  37.   mon.write("Energy: " .. pct .. "%")
  38. end
  39.  
  40. while true do
  41.   local energyCur = 0
  42.   local energyMax = 0
  43.  
  44.   for _,cell in pairs(cells) do
  45.     energyCur = energyCur + cell.getEnergy()
  46.     energyMax = energyMax + cell.getEnergyCapacity()
  47.   end
  48.  
  49.   local energyFraction = energyCur/energyMax
  50.   print(energyFraction)
  51.  
  52.   local state = energyFraction < threshold
  53.   redstone.setOutput("left",state)
  54.   writeMonStatus(state,energyFraction)
  55.  
  56.   sleep(10)
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement