Advertisement
UNOBTANIUM

WirelessControlReceiver

Apr 4th, 2014
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.05 KB | None | 0 0
  1. -- by UNOBTANIUM 4.4.2014
  2.  
  3. local id = "TEXT"
  4. local state = false
  5. local w,h = term.getSize()
  6.  
  7. function save()
  8.     local file = fs.open("redstone","w")
  9.         file.writeLine(id)
  10.         file.writeLine(tostring(state))
  11.     file.close()
  12. end
  13.  
  14. function load()
  15.     if fs.exists("redstone") then
  16.         local file = fs.open("redstone","r")
  17.             id = file.readLine()
  18.             if file.readLine() == "true" then
  19.                 state = true
  20.             end
  21.         file.close()
  22.     end
  23. end
  24.  
  25.  
  26.  
  27. function openRednet()
  28.     for _, side in pairs(redstone.getSides()) do
  29.       if peripheral.getType(side) == "modem" then
  30.         rednet.open(side)
  31.       end
  32.     end
  33. end
  34.  
  35. function setRedstone()
  36.     for _, side in pairs(redstone.getSides()) do
  37.         redstone.setOutput(side, state)
  38.     end
  39. end
  40.  
  41.  
  42. function set()
  43.     sleep(0)
  44.     term.setCursorPos(1, 5)
  45.     term.clearLine()
  46.     write("Text: ", 14, 5)
  47.     id = betterRead(20,5)
  48. end
  49.  
  50. function betterRead(x,y) -- DONE 1
  51.     term.setCursorBlink(true)
  52.     local s = id
  53.  
  54.     while true do
  55.         term.setCursorPos(x,y)
  56.         term.write( string.rep(' ', w - x + 1) )
  57.         term.setCursorPos(x,y)
  58.         if s:len()+x < w then
  59.             term.write(s)
  60.         else
  61.             term.write(s:sub( s:len() - (w-x-2)))
  62.         end
  63.         local e = { os.pullEvent() }
  64.         if e[1] == "char" then
  65.             s = s .. e[2]
  66.         elseif e[1] == "key" then
  67.             if e[2] == keys.enter then
  68.                 break
  69.             elseif e[2] == keys.backspace then
  70.                 s = s:sub( 1, s:len() - 1 )
  71.             end
  72.         end
  73.     end
  74.  
  75.     term.setCursorBlink(false)
  76.     return s
  77. end
  78.  
  79. function draw()
  80.     term.clear()
  81.     write("Text: " .. id, 14,5)
  82.     write("Current State: " .. tostring(state), 5,6)
  83.     write("Hit a button to change the text!",8,8)
  84. end
  85.  
  86. function write(text, x, y)
  87.     term.setCursorPos(x,y)
  88.     term.write(tostring(text))
  89. end
  90.  
  91.  
  92. function main()
  93.     while true do
  94.         draw()
  95.         openRednet()
  96.         local event = {os.pullEvent()}
  97.         if event[1] == "rednet_message" then
  98.             if event[3] == ("" .. id .. tostring(not state)) then
  99.                 state = not state
  100.                 setRedstone()
  101.             end
  102.         elseif event[1] == "key" then
  103.             set()
  104.         end
  105.         save()
  106.     end
  107. end
  108.  
  109.  
  110. load()
  111. setRedstone()
  112. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement