Advertisement
Te-ki

CCPlayerDectector

Mar 12th, 2016
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 20.47 KB | None | 0 0
  1. --ComputerCraft Player Dectector by Teki 0.1
  2. local summerTime = 1
  3. local debugMsg = ""
  4. local monitor
  5. local isMon = false
  6. local glasses
  7. local sensors = {}
  8. local noteBlock
  9. local isNote = false
  10. -- Glasses variables
  11. local glassesObjects
  12. local glassesObjectsCoords
  13. local captureMode = false
  14. local clickX = 1
  15. local clickY = 1
  16. local itemClicked = 0
  17. local itemClickedX = 0
  18. local itemClickedY = 0
  19. local movingItemId = 0
  20. local drawDECData = false
  21. -- end
  22. -- Note Block Variables
  23. local noteLoops = 0
  24. --end
  25. -- Energy Core
  26. rednet.open("top")
  27. local getEnergyStored = 0
  28. local getMaxEnergyStored = 0
  29. local lastEnergyStored = 0
  30. local energyFluctuation = 0
  31. local energyRatio = 0
  32. local length = 0
  33. --end
  34. local tArgs = { ... }
  35. local scale = 1
  36.  
  37. local hours = 0
  38. local minutes = 0
  39. local seconds = 0
  40. local dlTime = nil
  41. local curTime = 0
  42.  
  43. local players
  44. local playerList
  45. local playersList = ""
  46. local lastTimeSeen = {}
  47. local index
  48.  
  49. if peripheral.find("monitor") == nil then
  50.     monitor = term.current()
  51. else
  52.     monitor = peripheral.find("monitor")
  53.     isMon = true
  54. end
  55.  
  56. if peripheral.find("openperipheral_bridge") == nil then
  57.     return 0
  58. else
  59.     glasses = peripheral.find("openperipheral_bridge")
  60.     glasses.clear()
  61.     glassesObjects = {}
  62.     glassesObjects[1] = {}
  63.     glassesObjects[1]["origin"] = {}
  64.     glassesObjects[1]["origin"]["x"] = 1
  65.     glassesObjects[1]["origin"]["y"] = 1
  66.     glassesObjects[1]["irlTime"] = {}
  67.     glassesObjects[1]["irlTime"]["x"] = 2
  68.     glassesObjects[1]["irlTime"]["y"] = 2
  69.     glassesObjects[1]["igTime"] = {}
  70.     glassesObjects[1]["igTime"]["x"] = 50
  71.     glassesObjects[1]["igTime"]["y"] = 2
  72.     glassesObjects[1]["players"] = {}
  73.     glassesObjects[1]["players"]["x"] = 2
  74.     glassesObjects[1]["players"]["y"] = 11
  75.     glassesObjects[1]["DECBox"] = {}
  76.     glassesObjects[1]["DECBox"]["x"] = 150
  77.     glassesObjects[1]["DECBox"]["y"] = 1
  78.     glassesObjects[1]["Options"] = {}
  79.     glassesObjects[1]["Options"]["x"] = 1
  80.     glassesObjects[1]["Options"]["y"] = 1
  81.    
  82.     glassesObjects[2] = {}
  83.     glassesObjects[2]["screen"] = glasses.addBox(glassesObjects[1]["origin"]["x"],glassesObjects[1]["origin"]["y"],1920,1080,0xFFFFFF,0)
  84.     glassesObjects[2]["irlTime"] = glasses.addText(glassesObjects[1]["irlTime"]["x"],glassesObjects[1]["irlTime"]["y"],"", 0xFFFFFF)
  85.     glassesObjects[2]["igTime"] = glasses.addText(glassesObjects[1]["igTime"]["x"],glassesObjects[1]["igTime"]["y"],"", 0xFFFFFF)
  86.     -- PLAYER DETECTOR
  87.     glassesObjects[2]["players"] = {}
  88.     glassesObjects[2]["players"]["background"] = glasses.addBox(glassesObjects[1]["players"]["x"],glassesObjects[1]["players"]["y"],100,90,0x000000,0.2)
  89.     glassesObjects[2]["players"]["player1"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+2,"", 0xFFFFFF)
  90.     glassesObjects[2]["players"]["player2"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+12,"", 0xFFFFFF)
  91.     glassesObjects[2]["players"]["player3"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+22,"", 0xFFFFFF)
  92.     glassesObjects[2]["players"]["player4"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+32,"", 0xFFFFFF)
  93.     glassesObjects[2]["players"]["player5"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+42,"", 0xFFFFFF)
  94.     glassesObjects[2]["players"]["player6"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+52,"", 0xFFFFFF)
  95.     glassesObjects[2]["players"]["player7"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+62,"", 0xFFFFFF)
  96.     glassesObjects[2]["players"]["player8"] = glasses.addText(glassesObjects[1]["players"]["x"]+2,glassesObjects[1]["players"]["y"]+72,"", 0xFFFFFF)
  97.    
  98.     glassesObjects[2]["players"]["background"].setVisible(false)
  99.    
  100.     glassesObjects[2]["players"]["player1"].setClickable(false)
  101.     glassesObjects[2]["players"]["player2"].setClickable(false)
  102.     glassesObjects[2]["players"]["player3"].setClickable(false)
  103.     glassesObjects[2]["players"]["player4"].setClickable(false)
  104.     glassesObjects[2]["players"]["player5"].setClickable(false)
  105.     glassesObjects[2]["players"]["player6"].setClickable(false)
  106.     glassesObjects[2]["players"]["player7"].setClickable(false)
  107.     glassesObjects[2]["players"]["player8"].setClickable(false)
  108.     -- DRACONIC ENERGY CORE MONITOR
  109.     glassesObjects[2]["DECBox"] = {}
  110.     glassesObjects[2]["DECBox"]["background"] = glasses.addBox(glassesObjects[1]["DECBox"]["x"],glassesObjects[1]["DECBox"]["y"],140,50,0x000000,0.2)
  111.     glassesObjects[2]["DECBox"]["energy"] = glasses.addText(glassesObjects[1]["DECBox"]["x"]+5,glassesObjects[1]["DECBox"]["y"]+5,"",0xFFFFFF)
  112.     glassesObjects[2]["DECBox"]["fluctuation"] = glasses.addText(glassesObjects[1]["DECBox"]["x"]+5,glassesObjects[1]["DECBox"]["y"]+15,"",0xFFFFFF)
  113.     glassesObjects[2]["DECBox"]["barGreen"] = glasses.addBox(glassesObjects[1]["DECBox"]["x"]+5,glassesObjects[1]["DECBox"]["y"]+25,110,20,0x00FF00,1)
  114.     glassesObjects[2]["DECBox"]["barBlack"] = glasses.addBox(glassesObjects[1]["DECBox"]["x"]+10,glassesObjects[1]["DECBox"]["y"]+30,100,10,0x000000,1)
  115.     glassesObjects[2]["DECBox"]["barRed"] = glasses.addBox(glassesObjects[1]["DECBox"]["x"]+10,glassesObjects[1]["DECBox"]["y"]+30,0,10,0xFF0000,1)
  116.    
  117.     glassesObjects[2]["DECBox"]["energy"].setClickable(false)
  118.     glassesObjects[2]["DECBox"]["fluctuation"].setClickable(false)
  119.     glassesObjects[2]["DECBox"]["barGreen"].setClickable(false)
  120.     glassesObjects[2]["DECBox"]["barBlack"].setClickable(false)
  121.     glassesObjects[2]["DECBox"]["barRed"].setClickable(false)
  122.     -- GLASSES OPTIONS MENU
  123.     glassesObjects[2]["Options"] = {}
  124.     glassesObjects[2]["Options"]["button"] = glasses.addIcon(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],3)
  125.    
  126.     glassesObjects[2]["Options"]["background"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],140,50,0x000000,0.2)
  127.     glassesObjects[2]["Options"]["DECBox"] = glasses.addText(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],"",0xFFFFFF)
  128.     glassesObjects[2]["Options"]["irlTime"] = glasses.addText(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],"",0xFFFFFF)
  129.     glassesObjects[2]["Options"]["igTime"] = glasses.addText(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],"",0xFFFFFF)
  130.     glassesObjects[2]["Options"]["players"] = glasses.addText(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],"",0xFFFFFF)
  131.    
  132.     glassesObjects[2]["Options"]["DECBoxEnabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x00FF00,1)
  133.     glassesObjects[2]["Options"]["DECBoxDisabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x000000,1)
  134.     glassesObjects[2]["Options"]["irlTimeEnabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x00FF00,1)
  135.     glassesObjects[2]["Options"]["irlTimeDisabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x000000,1)
  136.     glassesObjects[2]["Options"]["igTimeEnabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x00FF00,1)
  137.     glassesObjects[2]["Options"]["igTimeDisabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x000000,1)
  138.     glassesObjects[2]["Options"]["playersEnabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x00FF00,1)
  139.     glassesObjects[2]["Options"]["playersDisabled"] = glasses.addBox(glassesObjects[1]["Options"]["x"],glassesObjects[1]["Options"]["y"],15,10,0x000000,1)
  140.    
  141.     glassesObjects[2]["Options"]["background"].setVisible(false)
  142.     glassesObjects[2]["Options"]["DECBox"].setVisible(false)
  143.     glassesObjects[2]["Options"]["irlTime"].setVisible(false)
  144.     glassesObjects[2]["Options"]["igTime"].setVisible(false)
  145.     glassesObjects[2]["Options"]["players"].setVisible(false)
  146.    
  147.     glassesObjects[2]["Options"]["DECBoxEnabled"].setVisible(false)
  148.     glassesObjects[2]["Options"]["DECBoxDisabled"].setVisible(false)
  149.     glassesObjects[2]["Options"]["irlTimeEnabled"].setVisible(false)
  150.     glassesObjects[2]["Options"]["irlTimeDisabled"].setVisible(false)
  151.     glassesObjects[2]["Options"]["igTimeEnabled"].setVisible(false)
  152.     glassesObjects[2]["Options"]["igTimeDisabled"].setVisible(false)
  153.     glassesObjects[2]["Options"]["playersEnabled"].setVisible(false)
  154.     glassesObjects[2]["Options"]["playersDisabled"].setVisible(false)
  155.    
  156.     glassesObjects[2]["Options"]["background"].setClickable(false)
  157.     glassesObjects[2]["Options"]["DECBox"].setClickable(false)
  158.     glassesObjects[2]["Options"]["irlTime"].setClickable(false)
  159.     glassesObjects[2]["Options"]["igTime"].setClickable(false)
  160.     glassesObjects[2]["Options"]["players"].setClickable(false)
  161.    
  162.     glassesObjects[2]["Options"]["DECBoxEnabled"].setClickable(false)
  163.     glassesObjects[2]["Options"]["DECBoxDisabled"].setClickable(false)
  164.     glassesObjects[2]["Options"]["irlTimeEnabled"].setClickable(false)
  165.     glassesObjects[2]["Options"]["irlTimeDisabled"].setClickable(false)
  166.     glassesObjects[2]["Options"]["igTimeEnabled"].setClickable(false)
  167.     glassesObjects[2]["Options"]["igTimeDisabled"].setClickable(false)
  168.     glassesObjects[2]["Options"]["playersEnabled"].setClickable(false)
  169.     glassesObjects[2]["Options"]["playersDisabled"].setClickable(false)
  170. end
  171.  
  172. if #tArgs > 0 then
  173.     scale = tonumber(tArgs[1])
  174. end
  175.  
  176. if peripheral.find("openperipheral_sensor") == nil then
  177.     return 0
  178. else
  179.     sensors = {peripheral.find("openperipheral_sensor", function(name, object) return object.getPlayers() end)}
  180.     if sensors == nil then
  181.         return 0
  182.     end
  183. end
  184.  
  185. if peripheral.find("note_block") ~= nil then
  186.     noteBlock = peripheral.find("note_block")
  187.     --noteBlock.setPitch(0)
  188.     isNote = true
  189. end
  190.  
  191. local function roundTo(num, n)
  192.   local mult = 10^(n or 0)
  193.   return math.floor(num * mult + 0.5) / mult
  194. end
  195.  
  196. local function isInTable(tab, target, key)
  197.     for i=1,#tab do
  198.         if key ~= "" and key ~= nil then
  199.             if tab[i][key] == target then
  200.                 return i
  201.             end
  202.         else
  203.             if tab[i] == target then
  204.                 return i
  205.             end
  206.         end
  207.     end
  208.     return false
  209. end
  210.  
  211. function updateList()
  212.     playerList = {}
  213.     for i=1,#sensors do
  214.         players = sensors[i].getPlayers()
  215.         if players ~= nil then
  216.             for i=1,#players do
  217.                 if isInTable(playerList, players[i]["name"]) == false then -- and name ~= sensor.getowner()
  218.                     playerList[#playerList+1] = players[i]["name"]
  219.                 end
  220.             end
  221.         else
  222.             monitor.write("No Players")
  223.         end
  224.     end
  225. end
  226.  
  227. function updateLastTimeSeenList()
  228.     if playerList ~= nil then
  229.         for i=1,#playerList do
  230.             index = isInTable(lastTimeSeen, playerList[i], "name")
  231.             if index == false then
  232.                 if #lastTimeSeen ~= nil then
  233.                     lastTimeSeen[#lastTimeSeen+1] = {}
  234.                     lastTimeSeen[#lastTimeSeen]["name"] = playerList[i]
  235.                     lastTimeSeen[#lastTimeSeen]["time"] = curTime
  236.                 end
  237.             else
  238.                 lastTimeSeen[index]["name"] = playerList[i]
  239.                 lastTimeSeen[index]["time"] = curTime
  240.             end
  241.         end
  242.     end
  243. end
  244.  
  245. function updatePlayersList()
  246.     if playerList ~= nil then
  247.         for i=1,8 do
  248.             if i <= #playerList then
  249.                 glassesObjects[2]["players"]["player"..i].setText(playerList[i])
  250.             else
  251.                 glassesObjects[2]["players"]["player"..i].setText("")
  252.             end
  253.         end
  254.     end
  255. end
  256.  
  257. function updateTime()
  258.     while true do
  259.         while dlTime == nil do
  260.             dlTime = http.get("http://www.timeapi.org/gmt/in+" .. 1+summerTime .. "+hour?format={%25H,%25M,%25S}")
  261.             if dlTime ~= nil then
  262.                 dlTime = textutils.unserialize(dlTime.readAll())
  263.                 hours = tonumber(dlTime[1])
  264.                 minutes = tonumber(dlTime[2])
  265.                 seconds = tonumber(dlTime[3])
  266.             else
  267.                 sleep(30)
  268.             end
  269.             sleep(1)
  270.         end
  271.         dlTime = nil
  272.         for i=seconds,60,1 do
  273.             curTime = string.format("%02d:%02d", hours, minutes)
  274.             seconds = i
  275.             sleep(1)
  276.         end
  277.     end
  278. end
  279.  
  280. function updateNoteBlock()
  281.     if noteLoops >= 10 then
  282.         for i=1,#playerList do
  283.             if playerList[i] ~= "Galfae" then
  284.                 noteBlock.triggerNote()
  285.                 --break
  286.             end
  287.         end
  288.         noteLoops = 0
  289.     else
  290.         noteLoops = noteLoops + 1
  291.     end
  292. end
  293.  
  294. function updateDECData()
  295.     while true do
  296.         -- Querry All ?
  297.         rednet.broadcast("getAll", "CCDECClient")
  298.         local id, msg = rednet.receive("CCDECServeur")
  299.         -- Energy Stored ?
  300.         getEnergyStored = msg[1]
  301.         -- Max Energy Stored ?
  302.         getMaxEnergyStored = msg[2]
  303.         energyFluctuation = (getEnergyStored - lastEnergyStored)/20
  304.         lastEnergyStored = getEnergyStored
  305.         energyRatio = (getEnergyStored/getMaxEnergyStored)
  306.         -- Energy Stored Rounded Milliards
  307.         getEnergyStored = math.floor(getEnergyStored/1000000000)
  308.         -- Max Energy Rounded Milliards
  309.         getMaxEnergyStored = math.floor(getMaxEnergyStored/1000000000)
  310.        
  311.         glassesObjects[2]["DECBox"]["energy"].setText(getEnergyStored .. "/" .. getMaxEnergyStored .. " MRF (" .. roundTo(energyRatio*100, 3) .. "%)")
  312.         if energyFluctuation > 0 then
  313.             glassesObjects[2]["DECBox"]["fluctuation"].setText("+" .. energyFluctuation .. " RF/t")
  314.         else
  315.             glassesObjects[2]["DECBox"]["fluctuation"].setText(energyFluctuation .. " RF/t")
  316.         end
  317.         length = 100*energyRatio
  318.         glassesObjects[2]["DECBox"]["barRed"].setWidth(length)
  319.         sleep(1)
  320.     end
  321. end
  322.  
  323. function drawCaptureMode()
  324.     if captureMode then
  325.         glassesObjects[2]["players"]["background"].setVisible(true)
  326.        
  327.         if drawDECData == false then
  328.             glassesObjects[2]["DECBox"]["background"].setVisible(true)
  329.             glassesObjects[2]["DECBox"]["energy"].setVisible(true)
  330.             glassesObjects[2]["DECBox"]["fluctuation"].setVisible(true)
  331.             glassesObjects[2]["DECBox"]["barGreen"].setVisible(true)
  332.             glassesObjects[2]["DECBox"]["barBlack"].setVisible(true)
  333.             glassesObjects[2]["DECBox"]["barRed"].setVisible(true)
  334.         end
  335.     else
  336.         glassesObjects[2]["players"]["background"].setVisible(false)
  337.        
  338.         if drawDECData == false then
  339.             glassesObjects[2]["DECBox"]["background"].setVisible(false)
  340.             glassesObjects[2]["DECBox"]["energy"].setVisible(false)
  341.             glassesObjects[2]["DECBox"]["fluctuation"].setVisible(false)
  342.             glassesObjects[2]["DECBox"]["barGreen"].setVisible(false)
  343.             glassesObjects[2]["DECBox"]["barBlack"].setVisible(false)
  344.             glassesObjects[2]["DECBox"]["barRed"].setVisible(false)
  345.         end
  346.     end
  347. end
  348.  
  349. function draw()
  350.     while true do
  351.         updateList()
  352.         updateLastTimeSeenList()
  353.         if isNote then
  354.             updateNoteBlock()
  355.         end
  356.         updatePlayersList()
  357.         monitor.clear()
  358.         if isMon then
  359.             monitor.setTextScale(scale)
  360.         end
  361.         monitor.setCursorPos(1,1)
  362.         monitor.write("Last Time Seen : ")
  363.         for i=1,#lastTimeSeen do
  364.             monitor.setCursorPos(1,1+i)
  365.             monitor.write(lastTimeSeen[i]["name"] .. " : " .. lastTimeSeen[i]["time"])
  366.         end
  367.         sleep(0)
  368.     end
  369. end
  370.  
  371. function drawGlasses()
  372.     while true do
  373.         drawCaptureMode()
  374.         glassesObjects[2]["irlTime"].setText(curTime)
  375.         glassesObjects[2]["igTime"].setText(textutils.formatTime(os.time(), true))
  376.         glasses.sync()
  377.         sleep(0)
  378.     end
  379. end
  380.  
  381. function moveDECData()
  382.     glassesObjects[1]["DECBox"]["x"] = glassesObjects[2]["DECBox"]["background"].getX()
  383.     glassesObjects[1]["DECBox"]["y"] = glassesObjects[2]["DECBox"]["background"].getY()
  384.     glassesObjects[2]["DECBox"]["energy"].setX(glassesObjects[1]["DECBox"]["x"]+5)
  385.     glassesObjects[2]["DECBox"]["energy"].setY(glassesObjects[1]["DECBox"]["y"]+5)
  386.     glassesObjects[2]["DECBox"]["fluctuation"].setX(glassesObjects[1]["DECBox"]["x"]+5)
  387.     glassesObjects[2]["DECBox"]["fluctuation"].setY(glassesObjects[1]["DECBox"]["y"]+15)
  388.     glassesObjects[2]["DECBox"]["barGreen"].setX(glassesObjects[1]["DECBox"]["x"]+5)
  389.     glassesObjects[2]["DECBox"]["barGreen"].setY(glassesObjects[1]["DECBox"]["y"]+25)
  390.     glassesObjects[2]["DECBox"]["barBlack"].setX(glassesObjects[1]["DECBox"]["x"]+10)
  391.     glassesObjects[2]["DECBox"]["barBlack"].setY(glassesObjects[1]["DECBox"]["y"]+30)
  392.     glassesObjects[2]["DECBox"]["barRed"].setX(glassesObjects[1]["DECBox"]["x"]+10)
  393.     glassesObjects[2]["DECBox"]["barRed"].setY(glassesObjects[1]["DECBox"]["y"]+30)
  394. end
  395.  
  396. function movePlayersData()
  397.     glassesObjects[1]["players"]["x"] = glassesObjects[2]["players"]["background"].getX()
  398.     glassesObjects[1]["players"]["y"] = glassesObjects[2]["players"]["background"].getY()
  399.     glassesObjects[2]["players"]["player1"].setX(glassesObjects[1]["players"]["x"]+2)
  400.     glassesObjects[2]["players"]["player1"].setY(glassesObjects[1]["players"]["y"]+2)
  401.     glassesObjects[2]["players"]["player2"].setX(glassesObjects[1]["players"]["x"]+2)
  402.     glassesObjects[2]["players"]["player2"].setY(glassesObjects[1]["players"]["y"]+12)
  403.     glassesObjects[2]["players"]["player3"].setX(glassesObjects[1]["players"]["x"]+2)
  404.     glassesObjects[2]["players"]["player3"].setY(glassesObjects[1]["players"]["y"]+22)
  405.     glassesObjects[2]["players"]["player4"].setX(glassesObjects[1]["players"]["x"]+2)
  406.     glassesObjects[2]["players"]["player4"].setY(glassesObjects[1]["players"]["y"]+32)
  407.     glassesObjects[2]["players"]["player5"].setX(glassesObjects[1]["players"]["x"]+2)
  408.     glassesObjects[2]["players"]["player5"].setY(glassesObjects[1]["players"]["y"]+42)
  409.     glassesObjects[2]["players"]["player6"].setX(glassesObjects[1]["players"]["x"]+2)
  410.     glassesObjects[2]["players"]["player6"].setY(glassesObjects[1]["players"]["y"]+52)
  411.     glassesObjects[2]["players"]["player7"].setX(glassesObjects[1]["players"]["x"]+2)
  412.     glassesObjects[2]["players"]["player7"].setY(glassesObjects[1]["players"]["y"]+62)
  413.     glassesObjects[2]["players"]["player8"].setX(glassesObjects[1]["players"]["x"]+2)
  414.     glassesObjects[2]["players"]["player8"].setY(glassesObjects[1]["players"]["y"]+72)
  415. end
  416.  
  417. function clickDownEvent()
  418.     local event = { os.pullEvent("glasses_component_mouse_down") }
  419.     if event[1] == "glasses_component_mouse_down" then
  420.         for i=1,#event do
  421.             term.setCursorPos(1,4+i)
  422.             term.write(event[i])
  423.         end
  424.         term.write(glassesObjects[2]["irlTime"].getId())
  425.         clickX = event[7]
  426.         clickY = event[8]
  427.         itemClicked = event[5]
  428.         itemClickedX = math.floor(clickX)
  429.         itemClickedY = math.floor(clickY)
  430.         if itemClicked == glassesObjects[2]["irlTime"].getId() or itemClicked == glassesObjects[2]["igTime"].getId() or
  431.             itemClicked == glassesObjects[2]["DECBox"]["background"].getId() or itemClicked == glassesObjects[2]["players"]["background"].getId() then
  432.             movingItemId = itemClicked
  433.             glasses.getObjectById(movingItemId).setClickable(false)
  434.         end
  435.        
  436.     end
  437. end
  438.  
  439. function clickUpEvent()
  440.     local event = { os.pullEvent("glasses_component_mouse_up") }
  441.     if event[1] == "glasses_component_mouse_up" then
  442.         clickX = event[7]+1
  443.         clickY = event[8]+1
  444.         itemClicked = event[5]
  445.         if itemClicked == glassesObjects[2]["screen"].getId() then
  446.             if movingItemId ~= 0 then
  447.                 glasses.getObjectById(movingItemId).setX(clickX-itemClickedX)
  448.                 glasses.getObjectById(movingItemId).setY(clickY-itemClickedY)
  449.                 if movingItemId == glassesObjects[2]["players"]["background"].getId() then
  450.                     movePlayersData()
  451.                 elseif movingItemId == glassesObjects[2]["DECBox"]["background"].getId() then
  452.                     moveDECData()
  453.                 end
  454.                 glasses.getObjectById(movingItemId).setClickable(true)
  455.                 movingItemId = 0
  456.             end
  457.         elseif movingItemId ~= 0 then
  458.             glasses.getObjectById(movingItemId).setClickable(true)
  459.             movingItemId = 0
  460.         end
  461.        
  462.     end
  463. end
  464.  
  465. function captureOnEvent()
  466.     local event = { os.pullEvent("glasses_capture") }
  467.     if event[1] == "glasses_capture" then
  468.         captureMode = true
  469.     end
  470. end
  471.  
  472. function captureOffEvent()
  473.     local event = { os.pullEvent("glasses_release") }
  474.     if event[1] == "glasses_release" then
  475.         captureMode = false
  476.     end
  477. end
  478.  
  479. function catchEvents()
  480.     --while true do
  481.         parallel.waitForAny(clickDownEvent, clickUpEvent, captureOnEvent, captureOffEvent)
  482.     --end
  483. end
  484.  
  485. function updateDECData()
  486.     while true do
  487.         -- Querry All ?
  488.         rednet.broadcast("getAll", "CCDECClient")
  489.         local id, msg = rednet.receive("CCDECServeur")
  490.         -- Energy Stored ?
  491.         getEnergyStored = msg[1]
  492.         -- Max Energy Stored ?
  493.         getMaxEnergyStored = msg[2]
  494.         energyFluctuation = (getEnergyStored - lastEnergyStored)/20
  495.         lastEnergyStored = getEnergyStored
  496.         energyRatio = (getEnergyStored/getMaxEnergyStored)
  497.         -- Energy Stored Rounded Milliards
  498.         getEnergyStored = math.floor(getEnergyStored/1000000000)
  499.         -- Max Energy Rounded Milliards
  500.         getMaxEnergyStored = math.floor(getMaxEnergyStored/1000000000)
  501.        
  502.         glassesObjects[2]["DECBox"]["energy"].setText(getEnergyStored .. "/" .. getMaxEnergyStored .. " MRF (" .. roundTo(energyRatio*100, 3) .. "%)")
  503.         if energyFluctuation > 0 then
  504.             glassesObjects[2]["DECBox"]["fluctuation"].setText("+" .. energyFluctuation .. " RF/t")
  505.         else
  506.             glassesObjects[2]["DECBox"]["fluctuation"].setText(energyFluctuation .. " RF/t")
  507.         end
  508.         length = 100*energyRatio
  509.         glassesObjects[2]["DECBox"]["barRed"].setWidth(length)
  510.         sleep(1)
  511.     end
  512. end
  513.  
  514. while true do
  515.     parallel.waitForAny(draw, drawGlasses, updateTime, catchEvents, updateDECData)
  516. end
  517.  
  518. monitor.clear()
  519. glasses.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement