Merge pull request #391 from Fate-JH/gen-msg-timing

The Facility's Generator Is Currently under Attack!
This commit is contained in:
Mazo 2020-04-22 18:54:00 +01:00 committed by GitHub
commit 103c779d83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -15,6 +15,9 @@ import net.psforever.types.{PlanetSideGeneratorState, Vector3}
import services.Service import services.Service
import services.avatar.{AvatarAction, AvatarServiceMessage} import services.avatar.{AvatarAction, AvatarServiceMessage}
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global
/** /**
* An `Actor` that handles messages being dispatched to a specific `Generator`. * An `Actor` that handles messages being dispatched to a specific `Generator`.
* @param gen the `Generator` object being governed * @param gen the `Generator` object being governed
@ -27,6 +30,7 @@ class GeneratorControl(gen : Generator) extends Actor
def DamageableObject = gen def DamageableObject = gen
def RepairableObject = gen def RepairableObject = gen
var imminentExplosion : Boolean = false var imminentExplosion : Boolean = false
var alarmCooldownPeriod : Boolean = false
def receive : Receive = checkBehavior def receive : Receive = checkBehavior
.orElse(takesDamage) .orElse(takesDamage)
@ -58,6 +62,16 @@ class GeneratorControl(gen : Generator) extends Actor
} }
gen.ClearHistory() gen.ClearHistory()
case GeneratorControl.UnderThreatAlarm() =>
if(!alarmCooldownPeriod) {
alarmCooldownPeriod = true
GeneratorControl.BroadcastGeneratorEvent(gen, event = 15)
context.system.scheduler.scheduleOnce(delay = 5 seconds, self, GeneratorControl.AlarmReset())
}
case GeneratorControl.AlarmReset() =>
alarmCooldownPeriod = false
case _ => ; case _ => ;
} }
@ -78,8 +92,6 @@ class GeneratorControl(gen : Generator) extends Actor
if(!target.Destroyed) { if(!target.Destroyed) {
target.Health = 1 //temporary target.Health = 1 //temporary
imminentExplosion = true imminentExplosion = true
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global
context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes()) context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes())
GeneratorControl.BroadcastGeneratorEvent(gen, 16) GeneratorControl.BroadcastGeneratorEvent(gen, 16)
} }
@ -99,6 +111,15 @@ object GeneratorControl {
*/ */
private case class GeneratorExplodes() private case class GeneratorExplodes()
/**
* na
*/
private case class UnderThreatAlarm()
/**
* na
*/
private case class AlarmReset()
/** /**
* na * na
* @param obj na * @param obj na
@ -142,7 +163,7 @@ object GeneratorControl {
GeneratorControl.UpdateOwner(target) GeneratorControl.UpdateOwner(target)
} }
//the generator is under attack //the generator is under attack
GeneratorControl.BroadcastGeneratorEvent(target, 15) target.Actor ! UnderThreatAlarm()
} }
} }
} }