| package li.cil.oc.api.network |
| |
| import li.cil.oc.common.tileentity.PowerDistributor |
| import scala.collection.mutable.ArrayBuffer |
| |
| |
| trait PoweredNode extends Node { |
| var arrayBuffer = ArrayBuffer[PowerDistributor]() |
| var demand = 2 |
| |
| override def receive(message: Message): Option[Array[Any]] = { |
| message.name match { |
| case "system.connect" => { |
| message.source match { |
| case distributor: PowerDistributor => { |
| println("connect") |
| if (arrayBuffer.filter(p => p == distributor).isEmpty) { |
| arrayBuffer += distributor |
| distributor.connectNode(this, getDemand, getPriority) |
| } |
| } |
| case _ => |
| } |
| } |
| case "system.disconnect" => { |
| message.source match { |
| case distributor: PowerDistributor => { |
| println("connect") |
| if (arrayBuffer.contains(distributor)) { |
| arrayBuffer -= distributor |
| distributor.disconnectNode(this) |
| } |
| } |
| case _ => |
| } |
| } |
| case _ => |
| } |
| super.receive(message) |
| } |
| |
| def removeBuffer(distributor: PowerDistributor) = { |
| distributor.disconnectNode(this) |
| arrayBuffer -= distributor |
| } |
| |
| override protected def onDisconnect() { |
| |
| arrayBuffer.foreach(e => { |
| e.disconnectNode(this) |
| }) |
| super.onDisconnect() |
| } |
| |
| def getDemand: Int = 2 |
| |
| def getPriority: Int = 1 |
| |
| def updateDemand(demand: Int) { |
| arrayBuffer.foreach(e => e.updateDemand(this, getDemand)) |
| } |
| } |