Fixed rack internal connectable <-> connectable comms.

This commit is contained in:
Florian Nücke 2015-12-25 20:28:03 +01:00
parent 1bc4695933
commit e1494e9224

View File

@ -177,17 +177,24 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
override def onMessage(message: Message): Unit = {
super.onMessage(message)
if (message.name == "network.message") message.data match {
case Array(packet: Packet) =>
case Array(packet: Packet) => relayIfMessageFromConnectable(message, packet)
case _ =>
}
}
private def relayIfMessageFromConnectable(message: Message, packet: Packet): Unit = {
for (slot <- 0 until getSizeInventory) {
val mountable = getMountable(slot)
if (mountable != null) {
val mapping = nodeMapping(slot)
for (connectableIndex <- 0 until 3) {
mapping(connectableIndex + 1) match {
case Some(side) =>
val mountable = getMountable(slot)
if (mountable != null && connectableIndex < mountable.getConnectableCount) {
if (connectableIndex < mountable.getConnectableCount) {
val connectable = mountable.getConnectableAt(connectableIndex)
if (connectable != null && connectable.node == message.source) {
sidedNode(toGlobal(side)).sendToReachable("network.message", packet)
relayToConnectablesOnSide(message, packet, side)
return
}
}
@ -195,7 +202,27 @@ class Rack extends traits.PowerAcceptor with traits.Hub with traits.PowerBalance
}
}
}
case _ =>
}
}
private def relayToConnectablesOnSide(message: Message, packet: Packet, sourceSide: ForgeDirection): Unit = {
for (slot <- 0 until getSizeInventory) {
val mountable = getMountable(slot)
if (mountable != null) {
val mapping = nodeMapping(slot)
for (connectableIndex <- 0 until 3) {
mapping(connectableIndex + 1) match {
case Some(side) if side == sourceSide =>
if (connectableIndex < mountable.getConnectableCount) {
val connectable = mountable.getConnectableAt(connectableIndex)
if (connectable != null && connectable.node != message.source) {
snifferNodes(slot)(connectableIndex).sendToNeighbors("network.message", packet)
}
}
case _ => // Not connected to a bus.
}
}
}
}
}