WIP: ComputerCraft Compatibility

dev
rahix 5 years ago
parent d2a1a8ebe5
commit 4fabea6653

@ -0,0 +1,58 @@
local BaseControl = require("bc")
-- ComputerCraft RedNet Compatibility
local Network = {
default_protocol = string.format("bc-%d.%d", BaseControl.version[1], BaseControl.version[2]),
}
function Network:new(modem, protocol)
local self = {
rednet = rednet,
modem = modem or peripheral.getName(peripheral.find("modem")),
protocol = protocol or Network.default_protocol,
}
setmetatable(self, {__index=Network})
return self
end
function Network:start(callback)
self.rednet.open(self.modem)
self.callback = callback
end
function Network:send(addr, msg)
self.rednet.send(addr, msg, self.protocol)
end
function Network:broadcast(msg)
self.rednet.broadcast(msg, self.protocol)
end
function Network:pull(filter, timeout)
while true do
local remote, msg = self.rednet.receive(self.protocol, timeout)
if remote ~= nil and filter(remote, msg) then
return msg
end
end
end
function Network:stop()
self.rednet.close(self.modem)
end
function Network:serve()
while true do
local remote, msg = self.rednet.receive(self.protocol)
self.callback(remote, msg)
end
end
BaseControl.Network = Network
function BaseControl:serve()
self.network:serve()
end
return BaseControl
Loading…
Cancel
Save