Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EnergyController = {
- cells = {},
- modem = nil,
- engineCompID = 90,
- enginesOn = false,
- minEnergy = 0,
- maxEnergy = 0,
- }
- function EnergyController:findWirelessModem()
- for _, side in pairs(rs.getSides()) do
- if peripheral.getType(side) == "modem" then
- self.modem = rednet.open(side)
- return true
- end
- end
- return false
- end
- function EnergyController:powerOnEngines()
- if not self.enginesOn then
- print("Turning on engines")
- self.enginesOn = true
- rednet.send(self.engineCompID, "on")
- end
- end
- function EnergyController:powerOffEngines()
- if self.enginesOn then
- print("Turning off engines")
- self.enginesOn = false
- rednet.send(self.engineCompID, "off")
- end
- end
- function EnergyController:mainLoop()
- while true do
- event, param1, param2, param3 = os.pullEvent()
- if event == 'rednet_message' then
- if string.find(param2, "energyStored:") then
- local energy = tonumber(param2:sub(14))
- if not self.cells[param1] then
- self.cells[param1] = energy
- local numCells = 0
- for _,_ in pairs(self.cells) do
- numCells = numCells + 1
- end
- self.minEnergy = (numCells * 600000) * 0.1
- self.maxEnergy = (numCells * 600000) * 0.9
- else
- self.cells[param1] = energy
- end
- print(textutils.serialize(self.cells))
- local totalEnergy = 0
- for cell, energy in pairs(self.cells) do
- totalEnergy = totalEnergy + energy
- end
- if totalEnergy < self.minEnergy then
- self:powerOnEngines()
- elseif totalEnergy > self.maxEnergy then
- self:powerOffEngines()
- end
- end
- end
- end
- end
- ec = EnergyController
- ec:findWirelessModem()
- ec:mainLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement