mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-14 17:56:34 -04:00
Fixed rack internal connectable <-> connectable comms.
This commit is contained in:
parent
1bc4695933
commit
e1494e9224
@ -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.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user