Advertisement
Guest User

reactorControl.lua

a guest
Sep 21st, 2014
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.44 KB | None | 0 0
  1. --imports
  2. local component = require("component")
  3. local event = require("event")
  4. local serialization = require("serialization")
  5. local serviceAddress = "df9274d2-2db6-4cda-921c-47564aeb0aa6"
  6. local servicePort = 1
  7.  
  8. local function callService(message, expectAnswer)
  9.   local answer = nil
  10.   component.modem.send(serviceAddress, servicePort, serialization.serialize(message))
  11.   if (expectAnswer == true) then
  12.     local _,_,from,port,_,ans = event.pull("modem_message")
  13.     answer = serialization.unserialize(ans)
  14.     return answer
  15.   end
  16.   return nil
  17. end
  18.  
  19. --main program starts here...
  20.  
  21.  
  22. local function getEnergyPercentage()
  23.   return callService({"getEnergyPercentage"},true)[1]
  24. end
  25.  
  26. local function getReactorStatus()
  27.   return callService({"getReactorStatus"},true)[1]
  28. end
  29.  
  30. local function setReactorStatus(status)
  31.   callService({"setReactorStatus",status},false)
  32. end
  33.  
  34. --program
  35. local tmp = 0
  36. while true do
  37.   tmp = tmp + 1
  38.   local reactorStatus = getReactorStatus()
  39.   local percentageFilled = getEnergyPercentage()
  40.   print("Percentage filled: " .. percentageFilled)
  41.   local newReactorStatus = reactorStatus
  42.   if (reactorStatus == false)
  43.   then
  44.     if (percentageFilled < 25)
  45.     then
  46.       newReactorStatus = true
  47.     else
  48.       newReactorStatus = false
  49.     end
  50.   else
  51.     if (percentageFilled > 80)
  52.     then
  53.       newReactorStatus = false
  54.     else
  55.       newReactorStatus = true
  56.     end
  57.   end
  58.   if(reactorStatus ~= newReactorStatus)
  59.   then
  60.     setReactorStatus(newReactorStatus)
  61.   end
  62. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement