simplified redstone driver (just using the message source as the redstone input/output provider)

This commit is contained in:
Florian Nücke 2013-10-25 00:47:15 +02:00
parent 1454512860
commit c556f4044e
2 changed files with 9 additions and 12 deletions

View File

@ -1,12 +1,9 @@
driver.redstone = {} driver.redstone = {}
-- Save this before there's a chance it gets changed by a user.
local owner = os.address()
function driver.redstone.analogInput(card, side) function driver.redstone.analogInput(card, side)
checkArg(1, card, "string") checkArg(1, card, "string")
checkArg(2, side, "number") checkArg(2, side, "number")
return send(card, "redstone.input", owner, side) return send(card, "redstone.input", side)
end end
function driver.redstone.analogOutput(card, side, value) function driver.redstone.analogOutput(card, side, value)
@ -14,9 +11,9 @@ function driver.redstone.analogOutput(card, side, value)
checkArg(2, side, "number") checkArg(2, side, "number")
checkArg(3, value, "number", "nil") checkArg(3, value, "number", "nil")
if value then if value then
return send(card, "redstone.output=", owner, side, value) return send(card, "redstone.output=", side, value)
else else
return send(card, "redstone.output", owner, side) return send(card, "redstone.output", side)
end end
end end

View File

@ -12,14 +12,14 @@ class RedstoneCard extends Component {
override def receive(message: Message) = super.receive(message).orElse { override def receive(message: Message) = super.receive(message).orElse {
message.data match { message.data match {
case Array(target: Array[Byte], side: Double) if message.name == "redstone.input" => case Array(side: Double) if message.name == "redstone.input" =>
network.get.sendToAddress(this, new String(target, "UTF-8"), network.get.sendToAddress(this, message.source.address.get,
"redstone.input", ForgeDirection.getOrientation(side.toInt)) "redstone.input", ForgeDirection.getOrientation(side.toInt))
case Array(target: Array[Byte], side: Double) if message.name == "redstone.output" => case Array(side: Double) if message.name == "redstone.output" =>
network.get.sendToAddress(this, new String(target, "UTF-8"), network.get.sendToAddress(this, message.source.address.get,
"redstone.output", ForgeDirection.getOrientation(side.toInt)) "redstone.output", ForgeDirection.getOrientation(side.toInt))
case Array(target: Array[Byte], side: Double, value: Double) if message.name == "redstone.output=" => case Array(side: Double, value: Double) if message.name == "redstone.output=" =>
network.get.sendToAddress(this, new String(target, "UTF-8"), network.get.sendToAddress(this, message.source.address.get,
"redstone.output=", ForgeDirection.getOrientation(side.toInt), value.toInt) "redstone.output=", ForgeDirection.getOrientation(side.toInt), value.toInt)
case _ => None // Ignore. case _ => None // Ignore.
} }