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