SHOW:
|
|
- or go back to the newest paste.
| 1 | -- takes about 56 seconds for a DM Generation loop to complete | |
| 2 | -- if you build a bigger one, increase TimeForParticleToReachFinalBend. | |
| 3 | -- ColliderActivationDuration should be fine. | |
| 4 | -- if you build a smaller one, experiment how long it takes the particle to | |
| 5 | -- reach the final bend, then add 2 seconds onto it (or dont... just experiment and | |
| 6 | -- see what works for you :]] ) | |
| 7 | ||
| 8 | -- Mine is 78x78 and this code works perfectly for it. (78 as in 78 electromagnets on the bottom of each side) | |
| 9 | PACounter = 0 | |
| 10 | CollisionPACounter = 0 | |
| 11 | - | TimeForParticleToReachFinalBend = 47 |
| 11 | + | TimeForParticleToReachFinalBend = 48 |
| 12 | - | ColliderActivationDuration = 9 |
| 12 | + | ColliderActivationDuration = 3 |
| 13 | ActivationDirection = "top" | |
| 14 | SignalingDirection = "bottom" | |
| 15 | -- a little less than 1 second due to code execution | |
| 16 | -- taking a tiny bit of extra time. | |
| 17 | PACounterSleepDuration = 0.95 | |
| 18 | ||
| 19 | function PrintTerminal(text, posX, posY) | |
| 20 | term.setCursorPos(posX, posY) | |
| 21 | term.write(text) | |
| 22 | end | |
| 23 | ||
| 24 | function IsActivated() | |
| 25 | return redstone.getInput(ActivationDirection) | |
| 26 | end | |
| 27 | ||
| 28 | function ResetCounters() | |
| 29 | PACounter = 0 | |
| 30 | CollisionPACounter = 0 | |
| 31 | end | |
| 32 | ||
| 33 | function ActivatePA(paDirection, isActivate) | |
| 34 | redstone.setOutput(paDirection, isActivate) | |
| 35 | sleep(0.2) | |
| 36 | end | |
| 37 | ||
| 38 | function SetNotifyerSignalOutput(isActive) | |
| 39 | redstone.setOutput(SignalingDirection, isActive) | |
| 40 | end | |
| 41 | ||
| 42 | function ManualDeactivate() | |
| 43 | term.clear() | |
| 44 | PrintTerminal("Manually Deactivating Dark Matter Generator.", 1, 0)
| |
| 45 | ActivatePA("right", false)
| |
| 46 | ActivatePA("left", false)
| |
| 47 | ResetCounters() | |
| 48 | sleep(1) | |
| 49 | end | |
| 50 | ||
| 51 | function PAGeneratorLoop() | |
| 52 | while (true) do | |
| 53 | ActivatePA("right", false)
| |
| 54 | ActivatePA("left", false)
| |
| 55 | ResetCounters() | |
| 56 | term.clear() | |
| 57 | term.setCursorPos(0,0) | |
| 58 | ||
| 59 | if (IsActivated()) then | |
| 60 | SetNotifyerSignalOutput(true) | |
| 61 | PrintTerminal("Dark Matter generator ONLINE", 1, 1)
| |
| 62 | PrintTerminal("Turning on Main Particle Accelerator...", 1, 2)
| |
| 63 | ActivatePA("right", true)
| |
| 64 | PrintTerminal("Waiting for particle to reach the final bend", 1, 3)
| |
| 65 | ||
| 66 | while (PACounter < TimeForParticleToReachFinalBend) do | |
| 67 | if (IsActivated() == false) then | |
| 68 | ManualDeactivate() | |
| 69 | return | |
| 70 | else | |
| 71 | PACounter = PACounter + 1 | |
| 72 | term.setCursorPos(1, 4) | |
| 73 | term.write(PACounter .. " / " .. TimeForParticleToReachFinalBend) | |
| 74 | sleep(PACounterSleepDuration) | |
| 75 | end | |
| 76 | end | |
| 77 | ||
| 78 | PrintTerminal("Particle has reached final bend", 1, 4)
| |
| 79 | PrintTerminal("Activating collision PA", 1, 5)
| |
| 80 | ActivatePA("left", true)
| |
| 81 | ||
| 82 | while (CollisionPACounter < ColliderActivationDuration) do | |
| 83 | if (IsActivated() == false) then | |
| 84 | ManualDeactivate() | |
| 85 | return | |
| 86 | else | |
| 87 | CollisionPACounter = CollisionPACounter + 1 | |
| 88 | term.setCursorPos(1, 6) | |
| 89 | term.write(CollisionPACounter .. " / " .. ColliderActivationDuration) | |
| 90 | sleep(PACounterSleepDuration) | |
| 91 | end | |
| 92 | end | |
| 93 | ||
| 94 | PrintTerminal("Particles collided in the past ".. ColliderActivationDuration.. " secs.", 1, 7)
| |
| 95 | PrintTerminal("Deactivating both PAs", 1, 8)
| |
| 96 | ActivatePA("right", false)
| |
| 97 | ActivatePA("left", false)
| |
| 98 | ResetCounters() | |
| 99 | sleep(1) | |
| 100 | else | |
| 101 | SetNotifyerSignalOutput(false) | |
| 102 | term.clear() | |
| 103 | PrintTerminal("Dark Matter generator offline.", 1, 1)
| |
| 104 | sleep(1) | |
| 105 | end | |
| 106 | end | |
| 107 | end | |
| 108 | ||
| 109 | function MainProgram() | |
| 110 | while true do | |
| 111 | PAGeneratorLoop() | |
| 112 | end | |
| 113 | end | |
| 114 | ||
| 115 | MainProgram() |