mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-15 10:21:45 -04:00
funnel wake-on-lan start through host, not direct
The network card's wake-on-lan previously was sending a computer.start message directly to the machine. But some hosts, specifically the Drone need to make certain start actions before the machine starts. For instance, the drone zeros its velocity (technically, it rises by .5m) closes #2866
This commit is contained in:
parent
d350b30e9c
commit
8a9740b641
@ -164,7 +164,13 @@ class Drone(val world: World) extends Entity(world) with MachineHost with intern
|
||||
|
||||
override def isPaused = machine.isPaused
|
||||
|
||||
override def start() = machine.start()
|
||||
override def start(): Boolean = {
|
||||
if (world.isRemote || machine.isRunning) {
|
||||
return false
|
||||
}
|
||||
preparePowerUp()
|
||||
machine.start()
|
||||
}
|
||||
|
||||
override def pause(seconds: Double) = machine.pause(seconds)
|
||||
|
||||
@ -474,7 +480,6 @@ class Drone(val world: World) extends Entity(world) with MachineHost with intern
|
||||
}
|
||||
}
|
||||
else if (!world.isRemote && !machine.isRunning) {
|
||||
preparePowerUp()
|
||||
start()
|
||||
}
|
||||
}
|
||||
|
@ -176,16 +176,18 @@ class NetworkCard(val host: EnvironmentHost) extends prefab.ManagedEnvironment w
|
||||
}
|
||||
// Accept wake-up messages regardless of port because we close all ports
|
||||
// when our computer shuts down.
|
||||
packet.data match {
|
||||
case Array(message: Array[Byte]) if wakeMessage.contains(new String(message, Charsets.UTF_8)) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: String) if wakeMessage.contains(message) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: Array[Byte], _*) if wakeMessageFuzzy && wakeMessage.contains(new String(message, Charsets.UTF_8)) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case Array(message: String, _*) if wakeMessageFuzzy && wakeMessage.contains(message) =>
|
||||
node.sendToNeighbors("computer.start")
|
||||
case _ =>
|
||||
val wakeup: Boolean = packet.data match {
|
||||
case Array(message: Array[Byte]) if wakeMessage.contains(new String(message, Charsets.UTF_8)) => true
|
||||
case Array(message: String) if wakeMessage.contains(message) => true
|
||||
case Array(message: Array[Byte], _*) if wakeMessageFuzzy && wakeMessage.contains(new String(message, Charsets.UTF_8)) => true
|
||||
case Array(message: String, _*) if wakeMessageFuzzy && wakeMessage.contains(message) => true
|
||||
case _ => false
|
||||
}
|
||||
if (wakeup) {
|
||||
host match {
|
||||
case ctx: Context => ctx.start()
|
||||
case _ => node.sendToNeighbors("computer.start")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user