iiburukibun

Turbine Control

Dec 19th, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.87 KB | None | 0 0
  1. local bundledSide = "right"
  2. local redstoneSide = "left"
  3. local maxReactors = 8
  4. local maxNeedCycles = 10
  5. local maxCurrCycles = 30
  6.  
  7. local waitBetween = 60 -- (Seconds, so 60 = 1-Minute)
  8.  
  9. local curReactors = 0
  10. local inNeedCycles = 0
  11. local currentCycles = 0
  12.  
  13. -- Toggle reactor on based on intger
  14. local function setOn(howMany)
  15.   -- print("Number of reactors online: "..howMany)
  16.   if howMany == 0 then
  17.     rs.setBundledOutput(bundledSide, 0)
  18.   else
  19.     rs.setBundledOutput(bundledSide, (2^howMany) - 1)
  20.   end
  21. end
  22.  
  23. -- Increase reactor count
  24. local function morePower()
  25.   if curReactors >= maxReactors then
  26.     -- Do nothing
  27.     setOn(0)
  28.   else
  29.     -- Add one
  30.     curReactors = curReactors + 1
  31.     setOn(curReactors)
  32.   end
  33. end
  34.  
  35. -- Decrease reactor count
  36. local function lessPower()
  37.   if curReactors <= 0 then
  38.     -- Set reactors
  39.     curReactors = 0
  40.     setOn(0)
  41.   else
  42.     curReactors = curReactors- 1
  43.     setOn(curReactors)
  44.   end
  45. end
  46.  
  47. -- Reset please
  48.   rs.setBundledOutput(bundledSide, 0)
  49. -- Actual run loop
  50. while true do
  51.   -- Is capacitor in need of charging? (redstoneSide)
  52.   if redstone.getInput(redstoneSide) then
  53.     -- How many cycles have we been in need of charging?  inNeedCycles vs currentCycles
  54.     if inNeedCycles >= maxNeedCycles then
  55.       -- Increase power if still in need
  56.       morePower()
  57.       -- Reset currentCycles
  58.       currentCycles = 0
  59.       inNeedCycles = 0
  60.     else
  61.       inNeedCycles = inNeedCycles + 1
  62.     end
  63.   elseif currentCycles >= maxCurrCycles then
  64.     -- Decrease power if currentCycles is over 10
  65.     lessPower()
  66.     currentCycles = 0
  67.     inNeedCycles = 0
  68.   end
  69.   currentCycles = currentCycles + 1
  70.  
  71.   -- Pause until next loop
  72.   print("---------------------------------------------")
  73.   print("Current C:"..currentCycles)
  74.   print("Need    C:"..inNeedCycles)
  75.   print("#Reactors:"..curReactors)
  76.   sleep(waitBetween)
  77. end
Advertisement
Add Comment
Please, Sign In to add comment