Advertisement
CodeMaker9

Computercraft

Jun 21st, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.36 KB | None | 0 0
  1. -- ****************************************************** --
  2. -- ****************************************************** --
  3. -- ** Reactor Madness Program ** --
  4. -- ** for Big Reactor ** --
  5. -- ** Written by krakaen ** --
  6. -- ** Video Tutorial ** --
  7. -- ** https://www.youtube.com/watch?v=SbbT7ncyS2M ** --
  8. -- ****************************************************** --
  9. -- ****************************************************** --
  10.  
  11. -- ******** Version 0.1 Changelog (02/16/2016) ********
  12. -- Changed currentRFTotal to 1 (makes power show at start)
  13.  
  14. -- ******** Version 0.2 Changelog (02/16/2016) ********
  15. -- Added fuel usage (mb/t)
  16. -- Added function round
  17. -- Added function comma_value
  18. -- Added function format_num
  19.  
  20. -- ******** Version 0.3 Changelog (02/17/2016) ********
  21. -- Change Rod looking for 0 instead of 1
  22.  
  23. -- ******** Version 0.4 Changelog (10/18/2016) ********
  24. -- Change rodLevel to do a Math.ceil instead of Math.floor
  25.  
  26. -- ******** Version 0.5 Changelog (03/01/2017) ********
  27. -- Change drawBoxed and drawFilledBox for drawLines with for loop
  28. -- to get compatibility with 1.60+
  29.  
  30. -- ******** Version 0.6 Changelog (03/22/2017) ********
  31. -- Added Custom error handling
  32. -- fixed typo in contorlsSize for controlsSize
  33.  
  34. function checkVersion()
  35. local monitorsCheck = {peripheral.find("monitor")}
  36. end
  37.  
  38. function checkErrors()
  39. if pcall(checkVersion) then
  40.  
  41. else
  42. error("The version of ComputerCraft is too old to use this program, sorry", 0)
  43. end
  44. local monitorsCheck = {peripheral.find("monitor")}
  45. local reactorsCheck = {peripheral.find("BigReactors-Reactor")}
  46.  
  47. if monitorsCheck[1] == nil then
  48. error("The Monitor is not being detected, make sure the connections(modem) are activated", 0)
  49. end
  50.  
  51. if reactorsCheck[1] == nil then
  52. error("The Reactor is not being detected, make sure the connections(modem) are activated. The problem could also be related to chunk protection on some public servers, ask an admin about it.", 0)
  53. end
  54. end
  55.  
  56. -- you need to give the index to be able to use the program
  57. -- ex : NameOfProgram Index (reactor Krakaen)
  58.  
  59. local args = { ... }
  60.  
  61. local button = {}
  62. local filleds = {}
  63. local boxes = {}
  64. local lines = {}
  65. local texts = {}
  66.  
  67. local refresh = true
  68.  
  69. local infosSize = {}
  70. local controlsSize = {}
  71. local numbersSize = {}
  72. local currentRfTotal = 1
  73. local currentRfTick = 1
  74. local currentFuelConsumedLastTick = 0.00001
  75.  
  76.  
  77. local rfPerTickMax = 1
  78. local minPowerRod = 0
  79. local maxPowerRod = 100
  80. local currentRodLevel = 1
  81.  
  82. local index = ""
  83.  
  84. checkErrors() -- verify that everything is okay to start the program
  85.  
  86. if (#args == 0) then
  87. error("No index Given, Make sure to start the 'start' program and not the 'reactor' program", 0)
  88. end
  89.  
  90. if (#args == 1) then
  91. index = args[1]
  92. end
  93.  
  94. local monitors = {peripheral.find("monitor")}
  95. local mon = monitors[1]
  96. local reactors = {peripheral.find("BigReactors-Reactor")}
  97.  
  98. -- use the black thingy sponge to clear the chalkboard
  99.  
  100. term.redirect(mon)
  101. mon.clear()
  102. mon.setTextColor(colors.white)
  103. mon.setBackgroundColor(colors.black)
  104.  
  105. function clearTable()
  106. button = {}
  107. end
  108.  
  109.  
  110.  
  111. -- All the things that make my buttons work
  112.  
  113. function setButton(name, title, func, xmin, ymin, xmax, ymax, elem, elem2, color)
  114. button[name] = {}
  115. button[name]["title"] = title
  116. button[name]["func"] = func
  117. button[name]["active"] = false
  118. button[name]["xmin"] = xmin
  119. button[name]["ymin"] = ymin
  120. button[name]["xmax"] = xmax
  121. button[name]["ymax"] = ymax
  122. button[name]["color"] = color
  123. button[name]["elem"] = elem
  124. button[name]["elem2"] = elem2
  125. end
  126.  
  127. -- stuff and things for buttons
  128.  
  129. function fill(text, color, bData)
  130. mon.setBackgroundColor(color)
  131. mon.setTextColor(colors.white)
  132. local yspot = math.floor((bData["ymin"] + bData["ymax"]) /2)
  133. local xspot = math.floor((bData["xmax"] - bData["xmin"] - string.len(bData["title"])) /2) +1
  134. for j = bData["ymin"], bData["ymax"] do
  135. mon.setCursorPos(bData["xmin"], j)
  136. if j == yspot then
  137. for k = 0, bData["xmax"] - bData["xmin"] - string.len(bData["title"]) +1 do
  138. if k == xspot then
  139. mon.write(bData["title"])
  140. else
  141. mon.write(" ")
  142. end
  143. end
  144. else
  145. for i = bData["xmin"], bData["xmax"] do
  146. mon.write(" ")
  147. end
  148. end
  149. end
  150. mon.setBackgroundColor(colors.black)
  151. end
  152.  
  153. -- stuff and things for buttons
  154.  
  155. function screen()
  156. local currColor
  157. for name,data in pairs(button) do
  158. local on = data["active"]
  159. currColor = data["color"]
  160. fill(name, currColor, data)
  161. end
  162. end
  163.  
  164. -- stuff and things for buttons
  165.  
  166. function flash(name)
  167.  
  168. screen()
  169. end
  170.  
  171. -- magical handler for clicky clicks
  172.  
  173. function checkxy(x, y)
  174. for name, data in pairs(button) do
  175. if y>=data["ymin"] and y <= data["ymax"] then
  176. if x>=data["xmin"] and x<= data["xmax"] then
  177. data["func"](data["elem"], data["elem2"])
  178. flash(data['name'])
  179. return true
  180. --data["active"] = not data["active"]
  181. --print(name)
  182. end
  183. end
  184. end
  185. return false
  186. end
  187.  
  188. -- Don't question my code, it works on my machine...
  189.  
  190. function label(w, h, text)
  191. mon.setCursorPos(w, h)
  192. mon.write(text)
  193. end
  194.  
  195. -- Draw function : put's all the beautiful magic in the screen
  196.  
  197. function draw()
  198.  
  199. for key,value in pairs(filleds) do
  200. local counter = 1
  201. for i=value[2],value[4],1 do
  202. paintutils.drawLine(value[1] , value[2]+counter, value[3], value[2]+counter, value[5])
  203. counter = counter + 1
  204. end
  205. end
  206.  
  207. for key,value in pairs(boxes) do
  208. paintutils.drawLine(value[1] , value[2], value[1], value[4], value[5])
  209. paintutils.drawLine(value[1] , value[2], value[3], value[2], value[5])
  210. paintutils.drawLine(value[1] , value[4], value[3], value[4], value[5])
  211. paintutils.drawLine(value[3] , value[2], value[3], value[4], value[5])
  212. end
  213.  
  214. for key,value in pairs(lines) do
  215. paintutils.drawLine(value[1] , value[2], value[3], value[4], value[5])
  216. end
  217.  
  218. for key,value in pairs(texts) do
  219. mon.setCursorPos(value[1], value[2])
  220. mon.setTextColor(value[4])
  221. mon.setBackgroundColor(value[5])
  222. mon.write(value[3])
  223. end
  224. screen()
  225. resetDraw()
  226. end
  227.  
  228. -- Resets the elements to draw to only draw the neccessity
  229.  
  230. function resetDraw()
  231. filleds = {}
  232. boxes = {}
  233. lines = {}
  234. texts = {}
  235. end
  236.  
  237. -- Handles all the clicks for the buttons
  238.  
  239. function clickEvent()
  240. local myEvent={os.pullEvent("monitor_touch")}
  241. checkxy(myEvent[3], myEvent[4])
  242. end
  243.  
  244. -- Power up the reactor (M&N are a good source of food right?)
  245.  
  246. function powerUp(m,n)
  247. local reactor = reactors[1]
  248. reactor.setActive(true)
  249. end
  250.  
  251. -- Power down the reactor (M&N are a good source of food right?)
  252.  
  253. function powerDown(m,n)
  254. local reactor = reactors[1]
  255. reactor.setActive(false)
  256. end
  257.  
  258. -- Handles and calculate the Min and Max of the power limitation
  259.  
  260. -- Creates the frame and the basic of the visual
  261. -- Also adds the variables informations for placement of stuff and things
  262.  
  263. function addDrawBoxesSingleReactor()
  264. local w, h = mon.getSize()
  265. local margin = math.floor((w/100)*2)
  266.  
  267. infosSize['startX'] = margin + 1
  268. infosSize['startY'] = margin + 1
  269. infosSize['endX'] = (((w-(margin*2))/3)*2)-margin
  270. infosSize['endY'] = h - margin
  271. infosSize['height'] = infosSize['endY']-infosSize['startY']-(margin*2)-2
  272. infosSize['width'] = infosSize['endX']-infosSize['startX']-(margin*2)-2
  273. infosSize['inX'] = infosSize['startX'] + margin +1
  274. infosSize['inY'] = infosSize['startY'] + margin +1
  275. infosSize['sectionHeight'] = math.floor(infosSize['height']/3)
  276.  
  277. table.insert(boxes, {infosSize['startX'] , infosSize['startY'], infosSize['endX'], infosSize['endY'], colors.gray})
  278. local name = "INFOS"
  279. table.insert(lines, {infosSize['startX'] + margin , infosSize['startY'], infosSize['startX'] + (margin*2) + #name+1, infosSize['startY'], colors.black})
  280. table.insert(texts, {infosSize['startX'] + (margin*2), infosSize['startY'], name, colors.white, colors.black})
  281.  
  282. local names = {}
  283. names[1] = 'ENERGY LAST TICK'
  284. names[2] = 'ENERGY STORED'
  285. names[3] = 'CONTROL ROD LEVEL'
  286.  
  287. for i=0,2,1 do
  288. table.insert(texts, {infosSize['inX'] + margin, infosSize['inY'] + (infosSize['sectionHeight']*i) +i, names[i+1], colors.white, colors.black})
  289. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 2 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + infosSize['width'], infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.lightGray})
  290. end
  291.  
  292.  
  293. -- Controls
  294.  
  295. controlsSize['startX'] = infosSize['endX'] + margin + 1
  296. controlsSize['startY'] = margin + 1
  297. controlsSize['endX'] = w-margin
  298. controlsSize['endY'] = (((h - (margin*2))/3)*2) +1
  299. controlsSize['height'] = controlsSize['endY']-controlsSize['startY']-(margin)-1
  300. controlsSize['width'] = controlsSize['endX']-controlsSize['startX']-(margin*2)-2
  301. controlsSize['inX'] = controlsSize['startX'] + margin +1
  302. controlsSize['inY'] = controlsSize['startY'] + margin
  303.  
  304. table.insert(boxes, {controlsSize['startX'] , controlsSize['startY'], controlsSize['endX'], controlsSize['endY'], colors.gray})
  305. name = "CONTROLS"
  306. table.insert(lines, {controlsSize['startX'] + margin , controlsSize['startY'], controlsSize['startX'] + (margin*2) + #name+1, controlsSize['startY'], colors.black})
  307. table.insert(texts, {controlsSize['startX'] + (margin*2), controlsSize['startY'], name, colors.white, colors.black})
  308.  
  309. controlsSize['sectionHeight'] = math.floor(controlsSize['height']/4)
  310.  
  311. reactor = reactors[1]
  312.  
  313. mon.setTextColor(colors.white)
  314. setButton("ON","ON", powerUp, controlsSize['inX'], controlsSize['inY'], controlsSize['inX'] + math.floor(controlsSize['width']/2) -1, controlsSize['inY'] +2, 0, 0, colors.green)
  315. setButton("OFF","OFF", powerDown, controlsSize['inX'] + math.floor(controlsSize['width']/2) +2, controlsSize['inY'], controlsSize['inX'] + controlsSize['width'], controlsSize['inY'] +2,0, 0, colors.red)
  316.  
  317. table.insert(texts, {controlsSize['inX']+8, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+1, 'AUTO-CONTROL', colors.white, colors.black})
  318.  
  319. table.insert(texts, {controlsSize['inX']+5, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+3, 'MIN', colors.lightBlue, colors.black})
  320. table.insert(texts, {controlsSize['inX']+5, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+4, minPowerRod..'%', colors.lightBlue, colors.black})
  321.  
  322. table.insert(texts, {controlsSize['inX']+13, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+4, '--', colors.white, colors.black})
  323. table.insert(texts, {controlsSize['inX']+20, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+3, 'MAX', colors.purple, colors.black})
  324. table.insert(texts, {controlsSize['inX']+20, controlsSize['inY'] +(controlsSize['sectionHeight']*1)+4, maxPowerRod..'%', colors.purple, colors.black})
  325. mon.setTextColor(colors.white)
  326.  
  327. setButton("low-10","-10", modifyRods, controlsSize['inX'], controlsSize['inY'] +(controlsSize['sectionHeight']*2)+2, controlsSize['inX'] + math.floor(controlsSize['width']/2) -1, controlsSize['inY'] +(controlsSize['sectionHeight']*2)+4, "min", -10, colors.lightBlue)
  328. setButton("high-10","-10", modifyRods, controlsSize['inX'] + math.floor(controlsSize['width']/2) +2, controlsSize['inY'] +(controlsSize['sectionHeight']*2)+2, controlsSize['inX'] + controlsSize['width'], controlsSize['inY'] +(controlsSize['sectionHeight']*2)+4, "max", -10, colors.purple)
  329.  
  330. setButton("low+10","+10", modifyRods, controlsSize['inX'], controlsSize['inY'] +(controlsSize['sectionHeight']*3)+2, controlsSize['inX'] + math.floor(controlsSize['width']/2) -1, controlsSize['inY'] +(controlsSize['sectionHeight']*3)+4, "min", 10, colors.lightBlue)
  331. setButton("high+10","+10", modifyRods, controlsSize['inX'] + math.floor(controlsSize['width']/2) +2, controlsSize['inY'] +(controlsSize['sectionHeight']*3)+2, controlsSize['inX'] + controlsSize['width'], controlsSize['inY'] +(controlsSize['sectionHeight']*3)+4, "max", 10, colors.purple)
  332.  
  333. -- Numbers
  334.  
  335. numbersSize['startX'] = infosSize['endX'] + margin + 1
  336. numbersSize['startY'] = controlsSize['endY'] + margin + 1
  337. numbersSize['endX'] = w-margin
  338. numbersSize['endY'] = h-margin
  339. numbersSize['height'] = numbersSize['endY']-numbersSize['startY']-(margin)-1
  340. numbersSize['width'] = numbersSize['endX']-numbersSize['startX']-(margin*2)-2
  341. numbersSize['inX'] = numbersSize['startX'] + margin +1
  342. numbersSize['inY'] = numbersSize['startY'] + margin
  343.  
  344. table.insert(boxes, {numbersSize['startX'] , numbersSize['startY'], numbersSize['endX'], numbersSize['endY'], colors.gray})
  345. name = "NUMBERS"
  346. table.insert(lines, {numbersSize['startX'] + margin , numbersSize['startY'], numbersSize['startX'] + (margin*2) + #name+1, numbersSize['startY'], colors.black})
  347. table.insert(texts, {numbersSize['startX'] + (margin*2), numbersSize['startY'], name, colors.white, colors.black})
  348.  
  349. refresh = true
  350. while refresh do
  351. parallel.waitForAny(refreshSingleReactor,clickEvent)
  352. end
  353. end
  354.  
  355. -- Makes and Handles the draw function for less lag in the visual
  356.  
  357. function refreshSingleReactor()
  358. local rfPerTick = 0
  359. local rfTotal = 0
  360. local rfTotalMax = 10000000
  361. local reactor = reactors[1]
  362.  
  363. rfTotal = reactor.getEnergyStored()
  364. rfPerTick = math.floor(reactor.getEnergyProducedLastTick())
  365. rodLevel = math.floor(reactor.getControlRodLevel(0))
  366. fuelPerTick = reactor.getFuelConsumedLastTick();
  367.  
  368. local i = 0
  369. local infotoAdd = 'RF PER TICK : '
  370.  
  371. if currentRfTick ~= rfPerTick then
  372. currentRfTick = rfPerTick
  373. if rfPerTick > rfPerTickMax then
  374. rfPerTickMax = rfPerTick
  375. end
  376.  
  377. table.insert(lines, {numbersSize['inX'] , numbersSize['inY'],numbersSize['inX'] + numbersSize['width'] , numbersSize['inY'], colors.black})
  378. table.insert(texts, {numbersSize['inX'], numbersSize['inY'], infotoAdd .. rfPerTick .. " RF", colors.white, colors.black})
  379. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + infosSize['width'], infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.lightGray})
  380.  
  381. width = math.floor((infosSize['width'] / rfPerTickMax)*rfPerTick)
  382. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + width, infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.green})
  383.  
  384. end
  385.  
  386. i = 1
  387. infotoAdd = 'ENERGY STORED : '
  388. if currentRfTotal ~= rfTotal then
  389. currentRfTotal = rfTotal
  390.  
  391. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + infosSize['width'], infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.lightGray})
  392.  
  393. width = math.floor((infosSize['width'] / rfTotalMax)*rfTotal)
  394. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + width, infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.green})
  395. table.insert(lines, {numbersSize['inX'] , numbersSize['inY'] +2 ,numbersSize['inX'] + numbersSize['width'] , numbersSize['inY'] +2, colors.black})
  396. table.insert(texts, {numbersSize['inX'], numbersSize['inY']+ 2 , infotoAdd .. rfTotal .. " RF", colors.white, colors.black})
  397. end
  398.  
  399. i = 2
  400. infotoAdd = 'CONTROL ROD LEVEL : '
  401. if currentRodLevel ~= rodLevel then
  402. currentRodLevel = rodLevel
  403.  
  404. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + infosSize['width'], infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.lightGray})
  405.  
  406. width = math.floor((infosSize['width'] / 100)*rodLevel)
  407. table.insert(filleds, {infosSize['inX'] , infosSize['inY'] + 1 + (infosSize['sectionHeight']*i) +i, infosSize['inX'] + width, infosSize['inY'] + (infosSize['sectionHeight']*(i+1))-2 +i, colors.green})
  408. table.insert(lines, {numbersSize['inX'] , numbersSize['inY']+4 ,numbersSize['inX'] + numbersSize['width'] , numbersSize['inY'] +4, colors.black})
  409. table.insert(texts, {numbersSize['inX'], numbersSize['inY']+ 4 , infotoAdd .. rodLevel .. "%", colors.white, colors.black})
  410. end
  411.  
  412. i = 3
  413. infotoAdd = 'FUEL USAGE : '
  414. if currentFuelConsumedLastTick ~= fuelPerTick then
  415. currentFuelConsumedLastTick = fuelPerTick
  416.  
  417. table.insert(lines, {numbersSize['inX'] , numbersSize['inY']+6 ,numbersSize['inX'] + numbersSize['width'] , numbersSize['inY'] +6, colors.black})
  418. table.insert(texts, {numbersSize['inX'], numbersSize['inY']+ 6 , infotoAdd .. format_num(tonumber(fuelPerTick),3) .. "mb/t", colors.white, colors.black})
  419. end
  420.  
  421. mon.setTextColor(colors.white)
  422. adjustRodsLevel()
  423.  
  424. draw()
  425.  
  426. sleep(2)
  427. end
  428.  
  429. --
  430. -- ** Get the informations from the index file
  431. -- line 1 = min ROD
  432. -- line 2 = max ROD
  433. --
  434.  
  435. function getInfoFromFile()
  436.  
  437. if (fs.exists(index..".txt") == false) then
  438. file = io.open(index..".txt","w")
  439. file:write("0")
  440. file:write("\n")
  441. file:write("100")
  442. file:close()
  443. else
  444. file = fs.open(index..".txt","r")
  445. minPowerRod = tonumber(file.readLine())
  446. maxPowerRod = tonumber(file.readLine())
  447. file.close()
  448. end
  449. end
  450.  
  451. -- Save informations to the index file
  452.  
  453. function setInfoToFile()
  454. file = io.open(index..".txt","w")
  455. file:write(minPowerRod .. "\n" .. maxPowerRod)
  456. file:flush()
  457. file:close()
  458. end
  459.  
  460. ---============================================================
  461. -- add comma to separate thousands
  462. -- From Lua-users.org/wiki/FormattingNumbers
  463. --
  464. --
  465. function comma_value(amount)
  466. local formatted = amount
  467. while true do
  468. formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
  469. if (k==0) then
  470. break
  471. end
  472. end
  473. return formatted
  474. end
  475.  
  476. ---============================================================
  477. -- rounds a number to the nearest decimal places
  478. -- From Lua-users.org/wiki/FormattingNumbers
  479. --
  480. --
  481. function round(val, decimal)
  482. if (decimal) then
  483. return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
  484. else
  485. return math.floor(val+0.5)
  486. end
  487. end
  488.  
  489. --===================================================================
  490. -- given a numeric value formats output with comma to separate thousands
  491. -- and rounded to given decimal places
  492. -- From Lua-users.org/wiki/FormattingNumbers
  493. --
  494. function format_num(amount, decimal, prefix, neg_prefix)
  495. local str_amount, formatted, famount, remain
  496.  
  497. decimal = decimal or 2 -- default 2 decimal places
  498. neg_prefix = neg_prefix or "-" -- default negative sign
  499.  
  500. famount = math.abs(round(amount,decimal))
  501. famount = math.floor(famount)
  502.  
  503. remain = round(math.abs(amount) - famount, decimal)
  504.  
  505. -- comma to separate the thousands
  506. formatted = comma_value(famount)
  507.  
  508. -- attach the decimal portion
  509. if (decimal > 0) then
  510. remain = string.sub(tostring(remain),3)
  511. formatted = formatted .. "." .. remain ..
  512. string.rep("0", decimal - string.len(remain))
  513. end
  514.  
  515. -- attach prefix string e.g '$'
  516. formatted = (prefix or "") .. formatted
  517.  
  518. -- if value is negative then format accordingly
  519. if (amount<0) then
  520. if (neg_prefix=="()") then
  521. formatted = "("..formatted ..")"
  522. else
  523. formatted = neg_prefix .. formatted
  524. end
  525. end
  526.  
  527. return formatted
  528. end
  529.  
  530. -- Clear and make the pixel smaller because we are not blind
  531.  
  532. mon.setBackgroundColor(colors.black)
  533. mon.clear()
  534. mon.setTextScale(0.5)
  535.  
  536. -- Get the information from the index file
  537. getInfoFromFile()
  538.  
  539.  
  540. -- Add's the visual and starts the Loop
  541. addDrawBoxesSingleReactor()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement