WillaRL_

Updated Mekanism Reactor Moniter

Dec 12th, 2020 (edited)
1,589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.39 KB | None | 0 0
  1. local statsDisp = require("statisticDisplayAPI")
  2. local buttonAPI = require("buttonAPI")
  3. local component = require("component")
  4. local event = require("event")
  5. local thread = require("thread")
  6. local gpuAPI = require("gpuAPI")
  7. local gpu = component.gpu
  8. local reac = component.reactor_logic_adapter
  9.  
  10.  
  11. local barDisplays = statsDisp()
  12. local buttons = buttonAPI()
  13.  
  14.  
  15. function energyOut()
  16.   return (reac.getProducing()*0.4/1000000)
  17. end
  18.  
  19.  
  20. function injectRate()
  21.   return reac.getInjectionRate()
  22. end
  23.  
  24. function internalBuffer()
  25.   return (reac.getEnergy()*0.4)/1000000
  26. end
  27.  
  28. function minusInjRate()
  29.   local currentRate = reac.getInjectionRate()
  30.   if currentRate > 0 then
  31.     reac.setInjectionRate(currentRate -1)
  32.   end
  33.  
  34.   return true
  35. end
  36.  
  37. function addInjRate()
  38.   local currentRate = reac.getInjectionRate()
  39.   if currentRate < 150 then
  40.     reac.setInjectionRate(reac.getInjectionRate() + 1)
  41.   end
  42.  
  43.   return true
  44. end
  45.  
  46. function deutAmount()
  47.   return reac.getDeuterium()
  48. end
  49.  
  50. function tritAmount()
  51.   return reac.getTritium()
  52. end
  53.  
  54. function plasmaHeat()
  55.   return reac.getPlasmaHeat()/1000000000
  56. end
  57.  
  58. function caseHeat()
  59.   return reac.getCaseHeat()/1000000000
  60. end
  61.  
  62. function injectRateStr()
  63.   return tostring(reac.getInjectionRate())
  64. end
  65.  
  66. function energyOutStr()
  67.   return tostring((reac.getProducing()*0.4)/1000000)
  68. end
  69.  
  70. function waterAmount()
  71.   return reac.getWater()
  72. end
  73.  
  74. function steamAmount()
  75.   return reac.getSteam()
  76. end
  77.  
  78. function status()
  79.   if reac.isIgnited() then
  80.     return "Running"
  81.   else
  82.     return "Halted "
  83.   end
  84. end
  85.  
  86. function ignitionStatus()
  87.   if reac.canIgnite() then
  88.     return "Reached ignition temperature"
  89.   else
  90.     return "Below ignition temperature"
  91.   end
  92. end
  93.  
  94. function maxPlasmaHeat()
  95.   return tostring(reac.getMaxPlasmaHeat())
  96. end
  97.  
  98. function maxCaseHeat()
  99.   return tostring(reac.getMaxCaseHeat())
  100. end
  101.  
  102. function energyOutStr()
  103.   return tostring(reac.getProducing()*0.4/1000000)
  104. end
  105.  
  106.  
  107. gpuAPI.clear(0x1E1E1E)
  108.  
  109. --ENERGY BOX--
  110. gpuAPI.fill(36, 2, 49, 2, 0x878787) -- Energy Box outside
  111. gpuAPI.fill(34, 4, 48, 3, 0x2D2D2D) -- Energy box inside
  112. gpuAPI.write(6, 2, 0x009900, 0x2D2D2D, " ENERGY ") -- Energy box label
  113. gpuAPI.write(10, 45, 0x009900, 0x2D2D2D, "Buffer")
  114. gpuAPI.write(19, 45, 0x009900, 0x2D2D2D, "Energy Output")
  115. gpuAPI.write(10, 5, 0x009900, 0x2D2D2D, "400MRF")
  116.  
  117. barDisplays:addGraph(1, 15, 10, 45, 6, 0x000000, 0x009900, internalBuffer, 0, 400)
  118. barDisplays:addGraph(1, 28, 23, 45, 6, 0x000000, 0x009900, energyOut, 0, 18)
  119. --ENERGY BOX--
  120.  
  121. --FUEL BOX--
  122. gpuAPI.fill(159, 39, 22, 2, 0x878787)
  123. gpuAPI.fill(157, 41, 21, 3, 0x2D2D2D)
  124. gpuAPI.write(43, 2, 0x990080, 0x2D2D2D, " FUEL ")
  125. gpuAPI.write(49, 6, 0x990080, 0x2D2D2D, "Injection Rate:")
  126. gpuAPI.write(47, 12, 0xFF2480, 0x2D2D2D, "Deuterium")
  127. gpuAPI.write(47, 15, 0x00FF00, 0x2D2D2D, "Tritium")
  128.  
  129. barDisplays:addGraph(0, 149, 49, 10, 7, 0x000000 , 0x990080, injectRate, 0, 150)
  130. barDisplays:addGraph(0, 151, 47, 14, 13, 0x000000, 0xFF2480, deutAmount, 0, 1000)
  131. barDisplays:addGraph(0, 151, 47, 17, 16, 0x000000, 0x00FF00, tritAmount, 0, 1000)
  132. barDisplays:addText(65, 6, 0x990080, 0x2D2D2D, injectRateStr)
  133. buttons:add("-", 0, 48, 43, 10, 7, 0x696969, 0xB4B4B4, 0.1, minusInjRate)
  134. buttons:add("+", 0, 155, 150, 10, 7, 0x696969, 0xB4B4B4, 0.1, addInjRate)
  135. --FUEL BOX--
  136.  
  137. --HEAT -BOX--
  138. gpuAPI.fill(97, 43, 34, 24, 0x878787)
  139. gpuAPI.fill(95, 45, 33, 25, 0x2D2D2D)
  140. gpuAPI.write(47, 24, 0xFF6D00, 0x2D2D2D, " HEAT ")
  141. gpuAPI.write(47, 26, 0xFF6D00, 0x2D2D2D, "Case Heat")
  142. gpuAPI.write(47, 29, 0xFF6D00, 0x2D2D2D, "Plasma Heat")
  143.  
  144.  
  145. barDisplays:addGraph(0, 93, 47, 28, 27, 0x000000, 0xFF6D00, caseHeat, 0, 10)
  146. barDisplays:addGraph(0, 93, 47, 31, 30, 0x000000, 0xFF6D00, plasmaHeat, 0, 15)
  147. --HEAT BOX--
  148.  
  149. --WATER BOX--
  150. gpuAPI.fill(155, 101, 34, 24, 0x878787)
  151. gpuAPI.fill(153, 103, 33, 25, 0x2D2D2D)
  152. gpuAPI.write(105, 24, 0x3349FF, 0x2D2D2D, " WATER ")
  153. gpuAPI.write(105, 26, 0x3349FF, 0x2D2D2D, "Water")
  154. gpuAPI.write(105, 29, 0xE1E1E1, 0x2D2D2D, "Steam")
  155.  
  156. barDisplays:addGraph(0, 152, 105, 28, 27, 0x000000, 0x3349FF, waterAmount, 0, 1000000000)
  157. barDisplays:addGraph(0, 152, 105, 31, 30, 0x000000, 0xE1E1E1, steamAmount, 0, 1000000000)
  158. --WATER BOX
  159.  
  160.  
  161. --STATISTICS BOX--
  162. gpuAPI.fill(159, 39, 49, 36, 0x878787)
  163. gpuAPI.fill(157, 41, 48, 37, 0x2D2D2D)
  164. gpuAPI.write(43, 36, 0xFFFFFF, 0x2D2D2D, " STATISTIC ")
  165. gpuAPI.write(43, 38, 0xFFFFFF, 0x2D2D2D, "Reactor Status:")
  166. gpuAPI.write(43, 40, 0xFFFFFF, 0x2D2D2D, "Ignition Status:")
  167. gpuAPI.write(43, 42, 0xFFFFFF, 0x2D2D2D, "Energy Production:")
  168. gpuAPI.write(43, 44, 0xFFFFFF, 0x2D2D2D, "Max Casing Heat:")
  169. gpuAPI.write(43, 46, 0xFFFFFF, 0x2D2D2D, "Max Plasma Heat:")
  170.  
  171. barDisplays:addText(59, 38, 0xCC6D80, 0x2D2D2D, status)
  172. barDisplays:addText(60, 40, 0xCC6D80, 0x2D2D2D, ignitionStatus)
  173. barDisplays:addText(62, 42, 0xCC6D80, 0x2D2D2D, energyOutStr)
  174. gpuAPI.write(77, 42, 0xCC6D80, 0x2D2D2D, "MRF/t")
  175. barDisplays:addText(60, 44, 0xCC6D80, 0x2D2D2D, maxCaseHeat)
  176. barDisplays:addText(60, 46, 0xCC6D80, 0x2D2D2D, maxPlasmaHeat)
  177. --STATISTICS BOX--
  178.  
  179.  
  180.  
  181.  
  182.  
  183. --[[
  184. function temp()
  185. while true do
  186.   local t, v, x, y = event.pull("touch")
  187.   gpu.fill(x,y, 1, 1, "X")
  188.   print(x,y,t,v)
  189. end
  190. end
  191. thread.create(temp)
  192.  
  193. --]]
  194.  
  195.  
  196.  
  197. function buttonListener()
  198.   while true do
  199.     local _, _, x, y = event.pull("touch")
  200.     buttons:click(x,y)
  201.   end
  202. end
  203.  
  204. thread.create(buttonListener)
  205.  
  206.  
  207.  
  208. barDisplays:start(0.5)
Advertisement
Add Comment
Please, Sign In to add comment