ALpha_R

Untitled

Feb 19th, 2020
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. --name : Reactor Graphic Interface
  2. --Author : Alpha_R
  3. --version : 0.2.0
  4. --Screen size = 57x24 3x2, 79x24 4x2
  5.  
  6. -------------------------------------------------//Initialisation
  7.  
  8. local screenSize = {}
  9. screenSize.x = 60
  10. screenSize.y = 24
  11.  
  12. local monitorSize = {}
  13. monitorSize.x = 79
  14. monitorSize.y = 24
  15.  
  16. local monitor = peripheral.wrap("left")
  17. local reactor = peripheral.wrap("BigReactors-Reactor_1")
  18.  
  19. monitor.setTextScale(0.5)
  20.  
  21. local buttonSize = {x = (screenSize.x/3) - 2, y = (screenSize.y/2)-1}
  22.  
  23. local debutJauge = buttonSize.x + 5
  24.  
  25.  
  26. local on = paintutils.loadImage("on.nfp")
  27. local off = paintutils.loadImage("off.nfp")
  28. local autoOn = paintutils.loadImage("autoOn.nfp")
  29. local autoOff = paintutils.loadImage("autoOff.nfp")
  30.  
  31. local info = {}
  32. info.nbCtrlRod = reactor.getNumberOfControlRods()
  33. info.fuelMax = reactor.getFuelAmountMax()
  34.  
  35. local fuelAmountPerc, fuelTempPerc, caseTempPerc, energyPerc, wasteAmountPerc
  36. local autoActive = true
  37. local lastEnergy = nil
  38.  
  39. -------------------------------------------------//Info Reacteur
  40.  
  41. function reactorInput()
  42. info.active = reactor.getActive()
  43. lastEnergy = info.energy or 1
  44. info.energy = reactor.getEnergyStored()
  45. info.fuelTemp = reactor.getFuelTemperature()
  46. info.caseTemp = reactor.getCasingTemperature()
  47. info.fuelAmount = reactor.getFuelAmount()
  48. info.wasteAmount = reactor.getWasteAmount()
  49. info.energyTick = reactor.getEnergyProducedLastTick()
  50. info.energyTick = math.floor(info.energyTick)
  51. info.fuelReactivity = reactor.getFuelReactivity()
  52. info.fuelReactivity = math.floor(info.fuelReactivity)
  53. info.fuelConsumedTick = reactor.getFuelConsumedLastTick()
  54. info.fuelConsumedTick = math.floor(info.fuelConsumedTick*100)/100
  55. info.ctrlRodLvl = reactor.getControlRodLevel(1)
  56. fuelAmountPerc = math.floor(info.fuelAmount/info.fuelMax*19)
  57. wasteAmountPerc = math.floor(info.wasteAmount/info.fuelMax*19)
  58. fuelTempPerc = math.floor(info.fuelTemp/2000*19)
  59. caseTempPerc = math.floor(info.caseTemp/2000*19)
  60. energyPerc = math.floor(info.energy/10000000*19)
  61. lvlRodPerc = math.floor(info.ctrlRodLvl/100*15)
  62. if(fuelTempPerc >=19)then
  63. fuelTempPerc = 19
  64. end
  65. if(caseTempPerc >=19)then
  66. caseTempPerc = 19
  67. end
  68. end
  69.  
  70. -------------------------------------------------//Affichage
  71.  
  72. function affichage()
  73. term.redirect(monitor)
  74. term.setBackgroundColor(colors.black)
  75. term.clear()
  76.  
  77. paintutils.drawFilledBox(1, buttonSize.y + 2, buttonSize.x, screenSize.y, colors.gray)
  78. paintutils.drawFilledBox(buttonSize.x + 2, 1, screenSize.x, screenSize.y, colors.gray)
  79. paintutils.drawFilledBox(screenSize.x + 2, buttonSize.y + 2, monitorSize.x, monitorSize.y, colors.gray)
  80.  
  81. if(info.active)then
  82. paintutils.drawImage(off, 1,1)
  83. else
  84. paintutils.drawImage(on, 1,1)
  85. end
  86. term.setBackgroundColor(colors.gray)
  87. term.setCursorPos(1, 16)
  88. term.write("Control rod : "..info.nbCtrlRod)
  89. term.setCursorPos(1, 18)
  90. term.write("Fuel react. : "..info.fuelReactivity)
  91. term.setCursorPos(1, 20)
  92. term.write("Fuel mB/t : "..info.fuelConsumedTick)
  93. term.setCursorPos(1, 22)
  94. term.write("Energy RF/t : "..info.energyTick)
  95.  
  96. paintutils.drawFilledBox(debutJauge, 23-fuelAmountPerc, debutJauge+5, 23, colors.yellow)
  97. paintutils.drawFilledBox(debutJauge+7, 23-wasteAmountPerc, debutJauge+12, 23, colors.yellow)
  98. paintutils.drawFilledBox(debutJauge+14, 23-fuelTempPerc, debutJauge+19, 23, colors.yellow)
  99. paintutils.drawFilledBox(debutJauge+21, 23-caseTempPerc, debutJauge+26, 23, colors.yellow)
  100. paintutils.drawFilledBox(debutJauge+28, 23-energyPerc, debutJauge+33, 23, colors.yellow)
  101.  
  102. term.setBackgroundColor(colors.gray)
  103. term.setCursorPos(debutJauge, 2)
  104. term.write("Fuel")
  105. term.setCursorPos(debutJauge+7, 2)
  106. term.write("Waste")
  107. term.setCursorPos(debutJauge+14, 2)
  108. term.write("F. °C")
  109. term.setCursorPos(debutJauge+21, 2)
  110. term.write("C. °c")
  111. term.setCursorPos(debutJauge+28, 2)
  112. term.write("E kRF")
  113. term.setCursorPos(debutJauge, 3)
  114. term.write(math.floor(info.fuelAmount/100)/10)
  115. term.setCursorPos(debutJauge+7, 3)
  116. term.write(math.floor(info.wasteAmount/100)/10)
  117. term.setCursorPos(debutJauge+14, 3)
  118. term.write(math.floor(info.fuelTemp))
  119. term.setCursorPos(debutJauge+21, 3)
  120. term.write(math.floor(info.caseTemp))
  121. term.setCursorPos(debutJauge+28, 3)
  122. term.write(math.floor(info.energy/1000))
  123.  
  124. if(autoActive)then
  125. paintutils.drawImage(autoOn, screenSize.x + 2,1)
  126. else
  127. paintutils.drawImage(autoOff, screenSize.x + 2,1)
  128. end
  129. paintutils.drawFilledBox(screenSize.x + 3, buttonSize.y + 7, screenSize.x+3+lvlRodPerc, buttonSize.y + 12, colors.yellow)
  130. term.setBackgroundColor(colors.gray)
  131. term.setCursorPos(screenSize.x + 3, buttonSize.y + 4)
  132. term.write("Ctrl Rod Lvl: "..info.ctrlRodLvl)
  133.  
  134. os.sleep(0.05)
  135. end
  136.  
  137. -------------------------------------------------//Bouton Ecran
  138.  
  139. function button()
  140. os.startTimer(0.45)
  141. local event, side, x, y = os.pullEvent()
  142. if(event == "monitor_touch")then
  143. if(y >= 1 and y <=buttonSize.y)then
  144. if(x >= 1 and x <= buttonSize.x)then
  145. if(info.active)then
  146. reactor.setActive(false)
  147. else
  148. reactor.setActive(true)
  149. end
  150. end
  151. if(x >= screenSize.x + 2 and x <= monitorSize.x)then
  152. if(autoActive)then
  153. autoActive = false
  154. reactor.setAllControlRodLevels(0)
  155. else
  156. autoActive = true
  157. end
  158. end
  159. end
  160. end
  161. end
  162.  
  163. -------------------------------------------------//AutoControl
  164.  
  165. function autoRod()
  166. if(lastEnergy < info.energy)then
  167. reactor.setAllControlRodLevels(info.ctrlRodLvl + 1)
  168. end
  169. if(lastEnergy > info.energy)then
  170. reactor.setAllControlRodLevels(info.ctrlRodLvl - 1)
  171. end
  172. end
  173.  
  174. -------------------------------------------------//Main Script
  175.  
  176. while(true)do
  177. reactorInput()
  178. affichage()
  179. if(autoActive)then
  180. autoRod()
  181. end
  182. button()
  183. end
Add Comment
Please, Sign In to add comment