Kaerius

CleanRoom

Nov 7th, 2023
923
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.03 KB | None | 0 0
  1. local component = require('component')
  2. local thread = require('thread')
  3. local event = require('event')
  4. local sides = require('sides')
  5. local gpu = component.gpu
  6.  
  7. local CheckInterval = 1
  8. local updateGuiInterval = 1
  9.  
  10. function main()
  11.     init()
  12.     init_gui()
  13.  
  14.     local resetBColor, resetFColor = gpu.getBackground(), gpu.getForeground()
  15.     local background = {}
  16.  
  17.     table.insert(background, event.listen("key_up", function (key, address, char)
  18.         if char == string.byte('q') then
  19.             event.push('exit')
  20.         end
  21.     end))
  22.     table.insert(background, event.timer(CheckInterval, failFast(check_gt), math.huge))
  23.     table.insert(background, event.timer(updateGuiInterval, failFast(update_gui), math.huge))
  24.  
  25.     local _, err = event.pull("exit")
  26.  
  27.     for _, b in ipairs(background) do
  28.         if type(b) == 'table' and b.kill then
  29.             b:kill()
  30.         else
  31.             event.cancel(b)
  32.         end
  33.     end
  34.  
  35.     gpu.setBackground(resetBColor)
  36.     gpu.setForeground(resetFColor)
  37.  
  38.     if err then
  39.         io.stderr:write(err)
  40.         os.exit(1)
  41.     else
  42.         os.exit(0)
  43.     end
  44. end
  45.  
  46. function failFast(fn)
  47.     return function(...)
  48.         local res = table.pack(xpcall(fn, debug.traceback, ...))
  49.         if not res[1] then
  50.             event.push('exit', res[2])
  51.         end
  52.         return table.unpack(res, 2)
  53.     end
  54. end
  55.  
  56. function errorExit(...)
  57.     out(...)
  58.     event.push('exit')
  59. end
  60.  
  61. ----------------------- DEBUG ---------------------------
  62. function object_to_string(level, object) local function get_tabs(num) local msg = "" for i = 0, num do  msg = msg .. "  " end return msg end  if level == nil then level = 0 end  local message = " "  if object == nil then message = message .. "nil" elseif type(object) == "boolean" or type(object) == "number" then message = message .. tostring(object) end if type(object) == "string" then message = message..object end if type(object) == "function" then message = message.."\"__function\"" end
  63. if type(object) == "table" then if level <= d_limit then message = message .. "\n" .. get_tabs(level) .. "{\n" for key, next_object in pairs(object) do message = message .. get_tabs(level + 1) .. "\"" .. key .. "\"" .. ":" .. object_to_string(level + 1, next_object) .. ",\n"; end message = message .. get_tabs(level) .. "}" else message = message .. "\"" .. "__table" .. "\"" end end return message end  function rec_obj_to_string(object, ...) arg = {...}
  64. if #arg > 0 then return object_to_string(0, object) .. rec_obj_to_string(...) else return object_to_string(0, object) end end  function out(...) local message = rec_obj_to_string(...) print(message) end
  65.  
  66.  
  67.  
  68. ----------------------- LOOP ---------------------------
  69. function check_gt()
  70.     si=component.gt_machine.getSensorInformation()[5]
  71.     clean=tonumber(string.sub(si, string.find(si,":",10)+5, string.find(si,"%.")-1))
  72.     if clean == 100 then
  73.         if rio then rio.setOutput({[0] = 15, 15, 15, 15, 15, 15}) end
  74.     else
  75.         if rio then rio.setOutput({[0] = 0, 0, 0, 0, 0, 0}) end
  76.     end
  77. end
  78.  
  79. -------------------- SUPPORTED FUNCTION -----------------------
  80. function init()
  81.     rio = link_component("redstone")
  82.     mcr = link_component("multimachine.cleanroom")
  83. end
  84.  
  85. function link_component(comp_name)
  86.     components = component.list(comp_name)
  87.     ret_comp = nil
  88.     for addr, name in pairs(components) do
  89.         if ret_comp == nil then
  90.             ret_comp = component.proxy(addr)
  91.             print("Link component " .. name .. " to address " .. ret_comp.address)
  92.         else
  93.             print("Warning: More then one component " .. name .. " found. Used: " .. ret_comp.address)
  94.         end
  95.     end
  96.     return ret_comp
  97. end
  98.  
  99. -------------------- GUI FUNCTION -----------------------
  100. function clear_screen()
  101.     local x, y = gpu.getResolution()
  102.     gpu.fill(1, 1, x, y, " ")
  103. end
  104.  
  105. function update_gui()
  106.     clean_i=tostring(clean).."%   "
  107.     gpu.set(1, 2, clean_i)
  108. end
  109.  
  110. function init_gui()
  111.     gpu.setResolution(8, 2)
  112.     clear_screen()
  113.     --gpu.set(1, 1, "Чистота:")
  114.     update_gui()
  115. end
  116.  
  117. main()
Advertisement
Add Comment
Please, Sign In to add comment