Scorpionfien

MyReactor

Jul 16th, 2015
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.02 KB | None | 0 0
  1. --BigReactors Reactor and Turbine Monitor/Control
  2. --Created By: scorpionfien
  3. --requires CC os 1.5
  4.  
  5. --Variables--
  6. --Modify as needed
  7.  
  8. --Timer
  9. local timer = os.startTimer(0.5)
  10.  
  11. --Reactor/Turbine--
  12. --Enter side if connected directly
  13. --Enter BigReactors-Reactor/Turbine_## if connected using modem
  14. reactor = peripheral.wrap("BigReactors-Reactor_1")
  15. turbine = peripheral.wrap("BigReactors-Turbine_1")
  16.  
  17. --Dispay--
  18. --Designed for a 5 x 7 monitor
  19. --Enter side if connected directly
  20. --Enter monitor_## if connected using modem
  21. m = peripheral.wrap("top")
  22. xMax = m.getSize()
  23. yMax = 33
  24.  
  25. --Functions
  26. --Yes I know some are quite long and messy :)
  27.  
  28. function clearScreen() --completely resets screen
  29. m.clear()
  30. m.setBackgroundColor(colors.black)
  31. m.setCursorPos(1,1)
  32. m.write(string.rep(" ", xMax))
  33. m.setCursorPos(1,2)
  34. m.write(string.rep(" ", xMax))
  35. m.setCursorPos(1,3)
  36. m.write(string.rep(" ", xMax))
  37. m.setCursorPos(1,4)
  38. m.write(string.rep(" ", xMax))
  39. m.setCursorPos(1,5)
  40. m.write(string.rep(" ", xMax))
  41. m.setCursorPos(1,6)
  42. m.write(string.rep(" ", xMax))
  43. m.setCursorPos(1,7)
  44. m.write(string.rep(" ", xMax))
  45. m.setCursorPos(1,8)
  46. m.write(string.rep(" ", xMax))
  47. m.setCursorPos(1,9)
  48. m.write(string.rep(" ", xMax))
  49. m.setCursorPos(1,10)
  50. m.write(string.rep(" ", xMax))
  51. m.setCursorPos(1,11)
  52. m.write(string.rep(" ", xMax))
  53. m.setCursorPos(1,12)
  54. m.write(string.rep(" ", xMax))
  55. m.setCursorPos(1,13)
  56. m.write(string.rep(" ", xMax))
  57. m.setCursorPos(1,14)
  58. m.write(string.rep(" ", xMax))
  59. m.setCursorPos(1,15)
  60. m.write(string.rep(" ", xMax))
  61. m.setCursorPos(1,16)
  62. m.write(string.rep(" ", xMax))
  63. m.setCursorPos(1,17)
  64. m.write(string.rep(" ", xMax))
  65. m.setCursorPos(1,18)
  66. m.write(string.rep(" ", xMax))
  67. m.setCursorPos(1,19)
  68. m.write(string.rep(" ", xMax))
  69. m.setCursorPos(1,20)
  70. m.write(string.rep(" ", xMax))
  71. m.setCursorPos(1,21)
  72. m.write(string.rep(" ", xMax))
  73. m.setCursorPos(1,22)
  74. m.write(string.rep(" ", xMax))
  75. m.setCursorPos(1,23)
  76. m.write(string.rep(" ", xMax))
  77. m.setCursorPos(1,24)
  78. m.write(string.rep(" ", xMax))
  79. m.setCursorPos(1,25)
  80. m.write(string.rep(" ", xMax))
  81. m.setCursorPos(1,26)
  82. m.write(string.rep(" ", xMax))
  83. m.setCursorPos(1,27)
  84. m.write(string.rep(" ", xMax))
  85. m.setCursorPos(1,28)
  86. m.write(string.rep(" ", xMax))
  87. m.setCursorPos(1,29)
  88. m.write(string.rep(" ", xMax))
  89. m.setCursorPos(1,30)
  90. m.write(string.rep(" ", xMax))
  91. m.setCursorPos(1,31)
  92. m.write(string.rep(" ", xMax))
  93. m.setCursorPos(1,32)
  94. m.write(string.rep(" ", xMax))
  95. m.setCursorPos(1,33)
  96. m.write(string.rep(" ", xMax))
  97. end
  98.  
  99. clearScreen()
  100. m.setCursorPos(1,1)
  101.  
  102. --Constant
  103. --Monitor Setup--
  104. --Reactor Status
  105. m.setBackgroundColor(colors.black)
  106. m.setCursorPos(2,2)
  107. m.write("Reactor Status: ")
  108. m.setCursorPos(2,3)
  109. m.write("[Power]")
  110. r4 = m.getCursorPos()
  111. --Energy Stored
  112. m.setCursorPos(2,5)
  113. m.write("Stored Energy: ")
  114. r1 = m.getCursorPos()
  115. --Energy Produced
  116. m.setBackgroundColor(colors.black)
  117. m.setCursorPos(2,9)
  118. m.write("Energy Production: ")
  119. --Fuel Reactivity
  120. m.setCursorPos(2,11)
  121. m.write("Fuel Reactivity: ")
  122. --Fuel Level
  123. m.setCursorPos(2,14)
  124. m.write("Fuel Level: ")
  125. r2 = m.getCursorPos()
  126. --Fuel Consumed
  127. m.setCursorPos(2,18)
  128. m.write("Fuel Consumption: ")
  129. --Control Rod Level
  130. m.setCursorPos(2,21)
  131. m.write("Control Rod Level: ")
  132. r3 = m.getCursorPos()
  133. --Controls Rod Control
  134. m.setCursorPos(2,22)
  135. m.write("[Increase] [Decrease]")
  136. m.setCursorPos(2,23)
  137. m.write("[Zero] [Half] [Max]")
  138. --Waste
  139. m.setCursorPos(2,25)
  140. m.write("Reactor Waste: ")
  141. --Case and Fuel Temp
  142. m.setCursorPos(2,28)
  143. m.write("Case Temperature: ")
  144. m.setCursorPos(2,31)
  145. m.write("Fuel Temperature: ")
  146.  
  147. --Main Program--
  148.  
  149. while true do
  150.  
  151. local event, a, x, y = os.pullEvent()
  152. if (event == "monitor_touch") then
  153. --Reactor Status
  154. if x > 2 and x < r4 and y == 3 then
  155. power = reactor.getActive()
  156. if power == true then
  157. reactor.setActive(false)
  158. end
  159. if pwer == false then
  160. reactor.setActive(true)
  161. end
  162. end
  163.  
  164. --Control Rods--
  165. --Increase
  166. if x > 2 and x < 12 and y == 22 then
  167. reactor.setAllControlRodLevels(reactor.getControlRodLevel(1) + 1)
  168. end
  169.  
  170. --Decrease
  171. if x > 15 and x < 25 and y == 22 then
  172. reactor.setAllControlRodLevels(reactor.getControlRodLevel(1) - 1)
  173. end
  174.  
  175. --Zero
  176. if x > 2 and x < 7 and y == 23 then
  177. reactor.setAllControlRodLevels(0)
  178. end
  179.  
  180. --Half
  181. if x > 10 and x < 16 and y == 23 then
  182. levelRod = reactor.getControlRodLevel(1)
  183. if levelRod == 0 or test == 100 then
  184. reactor.setAllControlRodLevels(50)
  185. end
  186. if levelRod > 1 and text < 100 then
  187. reactor.setAllControlRodLevels((reactor.getControlRodLevel(1) / 50) +0.5)
  188. end
  189. end
  190.  
  191. --Max
  192. if x > 19 and x < 24 and y == 23 then
  193. reactor.setAllControlRodLevels(100)
  194. end
  195.  
  196. elseif (event == "timer" and a == timer) then
  197.  
  198. rActive = reactor.getActive()
  199. reactorEnergy = reactor.getEnergyStored()
  200. rawStored= reactorEnergy/10000000
  201. reactorStored = math.floor((rawStored*100)+0.5)
  202. rEbar = math.floor((rawStored*30)+0.5)
  203. rProduced = reactor.getEnergyProducedLastTick()
  204. energyProduced = math.floor((rProduced*10)*0.1)
  205. reactivity = reactor.getFuelReactivity()
  206. fuelReactivity = math.floor((reactivity*1)+0.5)
  207. currFuel = reactor.getFuelAmount()
  208. maxFuel = reactor.getFuelAmountMax()
  209. rawFuel = currFuel/maxFuel
  210. fuelLevel = math.floor((rawFuel*100)+0.5)
  211. rFbar = math.floor((rawFuel*30)+0.5)
  212. consumedFuel = reactor.getFuelConsumedLastTick()
  213. reactorWaste = reactor.getWasteAmount
  214. degreeCaseTemp = reactor.getCasingTemperature()
  215. caseTemp = math.floor((degreeCaseTemp*10)*0.1)
  216. degreeFuelTemp = reactor.getFuelTemperature()
  217. fuelTemp = math.floor((degreeFuelTemp*10)*0.1)
  218.  
  219.  
  220.  
  221. --Reactor Status
  222. m.setBackgroundColor(colors.black)
  223. if rActive == true then
  224. m.setCursorPos(2,3)
  225. m.write(string.rep(" ", 11)
  226. m.setCursorPos(2,3)
  227. m.setTextColor(colors.lime)
  228. m.write("Active")
  229. end
  230. if rActive == false then
  231. m.setCursorPos(2,3)
  232. m.write(string.rep(" ", 11)
  233. m.setCursorPos(2,3)
  234. m.setTextColor(colors.red)
  235. m.write("Inactive")
  236. end
  237. m.setTextColor(colors.white)
  238.  
  239. --Energy Stored & Loading Bar
  240. m.setCursorPos(r1,5)
  241. m.write(string.rep(" ",30))
  242. m.setCursorPos(r1,5)
  243. m.write(reactorStored.."%")
  244. m.setCursorPos(2,6)
  245. m.setBackgroundColor(colors.gray)
  246. m.write(string.rep(" ",30))
  247. m.setCursorPos(2,6)
  248. m.setBackgroundColor(colors.green)
  249. m.write(string.rep(" ",rEbar))
  250.  
  251. m.setCursorPos(2,7)
  252. m.setBackgroundColor(colors.gray)
  253. m.write(string.rep(" ",30))
  254. m.setCursorPos(2,7)
  255. m.setBackgroundColor(colors.green)
  256. m.write(string.rep(" ",rEbar))
  257. m.setBackgroundColor(colors.black)
  258.  
  259. --Energy Produced
  260. m.setCursorPos(2,10)
  261. m.write(string.rep(" ",30))
  262. m.setCursorPos(2,10)
  263. m.write(energyProduced.." RF / t)
  264.  
  265. --Fuel Reactivity
  266. m.setCursorPos(2,12)
  267. m.write(string.rep(" ",30))
  268. m.setCursorPos(2,12)
  269. m.write(fuelReactivity.."%")
  270.  
  271. --Fuel Level & Loading Bar
  272. m.setCursorPos(r2,14)
  273. m.write(string.rep(" ",30))
  274. m.setCursorPos(r2,14)
  275. m.write(fuelLevel.."%")
  276.  
  277. m.setCursorPos(2,15)
  278. m.setBackgroundColor(colors.gray)
  279. m.write(string.rep(" ",30))
  280. m.setCursorPos(2,15)
  281. m.setBackgroundColor(colors.yellow)
  282. m.write(string.rep(" ",rFbar))
  283.  
  284. m.setCursorPos(2,16)
  285. m.setBackgroundColor(colors.gray)
  286. m.write(string.rep(" ",30))
  287. m.setCursorPos(2,16)
  288. m.setBackgroundColor(colors.yellow)
  289. m.write(string.rep(" ",rFbar))
  290. m.setBackgroundColor(colors.black)
  291.  
  292. --Fuel Consumption
  293. m.setCursorPos(2,19)
  294. m.write(string.rep(" ",30)
  295. m.setCursorPos(2,19)
  296. m.write(comsumedFuel)
  297. m.setCursorPos(8,19)
  298. m.write(string.rep(" ",30)
  299. m.setCursorPos(8,19)
  300. m.write(" mB/t")
  301.  
  302. --Control Rod Level
  303. m.setCursorPos(r3,21)
  304. m.write(string.rep(" ",30))
  305. m.setCursorPos(r3,21)
  306. m.write(levelRod)
  307.  
  308. --Waste
  309. m.setCursorPos(2,26)
  310. m.write(string.rep(" ",30))
  311. m.setCursorPos(2,26)
  312. m.write(reactorWaste.." mB/t")
  313.  
  314. --CaseTemp
  315. m.setCursorPos(2,28)
  316. m.write(string.rep(" ",30))
  317. m.setCursorPos(2,28)
  318. m.write(caseTemp.."*C")
  319.  
  320. --Fuel Temp
  321. m.setCursorPos(2,31)
  322. m.write(string.rep(" ",30))
  323. m.setCursorPos(2,32)
  324. m.write(fuelTemp.."*C")
  325.  
  326. timer = os.startTimer(0.5)
  327. end
  328. end
Advertisement
Add Comment
Please, Sign In to add comment