Fixed unconnected servers not receiving energy since side rework a few commits back.

Also added missing check for periodic power updates (for wireless strength based power consumption) which should improve racks' tick times a bit.
This commit is contained in:
Florian Nücke 2014-12-21 20:26:05 +01:00
parent 0ac4c8efba
commit 39f666ea94

View File

@ -134,7 +134,7 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB
override protected def distribute() = { override protected def distribute() = {
def node(side: Int) = sides(side) match { def node(side: Int) = sides(side) match {
case None => servers(side).fold(null: Connector)(_.machine.node.asInstanceOf[Connector]) case None | Some(ForgeDirection.UNKNOWN) => servers(side).fold(null: Connector)(_.machine.node.asInstanceOf[Connector])
case _ => null case _ => null
} }
val nodes = (0 to 3).map(node) val nodes = (0 to 3).map(node)
@ -236,23 +236,26 @@ class ServerRack extends traits.PowerAcceptor with traits.Hub with traits.PowerB
override def updateEntity() { override def updateEntity() {
super.updateEntity() super.updateEntity()
if (isServer && isConnected) { if (isServer && isConnected) {
if (range > 0 && !Settings.get.ignorePower && anyRunning) { val shouldUpdatePower = world.getTotalWorldTime % Settings.get.tickFrequency == 0
val running = servers.count { if (shouldUpdatePower && range > 0 && !Settings.get.ignorePower) {
val countRunning = servers.count {
case Some(server) => server.machine.isRunning case Some(server) => server.machine.isRunning
case _ => false case _ => false
} }
var cost = -(running * range * Settings.get.wirelessCostPerRange) if (countRunning > 0) {
for (side <- ForgeDirection.VALID_DIRECTIONS if cost < 0) { var cost = -(countRunning * range * Settings.get.wirelessCostPerRange * Settings.get.tickFrequency)
sidedNode(side) match { for (side <- ForgeDirection.VALID_DIRECTIONS if cost < 0) {
case connector: Connector => cost = connector.changeBuffer(cost) sidedNode(side) match {
case _ => case connector: Connector => cost = connector.changeBuffer(cost)
case _ =>
}
} }
} }
} }
servers collect { servers collect {
case Some(server) => case Some(server) =>
if (server.tier == Tier.Four && world.getTotalWorldTime % Settings.get.tickFrequency == 0) { if (shouldUpdatePower && server.tier == Tier.Four) {
server.machine.node.asInstanceOf[Connector].changeBuffer(Double.PositiveInfinity) server.machine.node.asInstanceOf[Connector].changeBuffer(Double.PositiveInfinity)
} }
server.machine.update() server.machine.update()