From 03ecad38a692fce30a60d818c9ac856b97ad08f8 Mon Sep 17 00:00:00 2001 From: FateJH Date: Wed, 22 Apr 2020 13:22:50 -0400 Subject: [PATCH] the facility's generator is currently under attack --- .../generator/GeneratorControl.scala | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala index b7be5b051..4ee73fa8f 100644 --- a/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala +++ b/common/src/main/scala/net/psforever/objects/serverobject/generator/GeneratorControl.scala @@ -15,6 +15,9 @@ import net.psforever.types.{PlanetSideGeneratorState, Vector3} import services.Service 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`. * @param gen the `Generator` object being governed @@ -27,6 +30,7 @@ class GeneratorControl(gen : Generator) extends Actor def DamageableObject = gen def RepairableObject = gen var imminentExplosion : Boolean = false + var alarmCooldownPeriod : Boolean = false def receive : Receive = checkBehavior .orElse(takesDamage) @@ -58,6 +62,16 @@ class GeneratorControl(gen : Generator) extends Actor } 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 _ => ; } @@ -78,8 +92,6 @@ class GeneratorControl(gen : Generator) extends Actor if(!target.Destroyed) { target.Health = 1 //temporary imminentExplosion = true - import scala.concurrent.duration._ - import scala.concurrent.ExecutionContext.Implicits.global context.system.scheduler.scheduleOnce(10 seconds, self, GeneratorControl.GeneratorExplodes()) GeneratorControl.BroadcastGeneratorEvent(gen, 16) } @@ -99,6 +111,15 @@ object GeneratorControl { */ private case class GeneratorExplodes() + /** + * na + */ + private case class UnderThreatAlarm() + /** + * na + */ + private case class AlarmReset() + /** * na * @param obj na @@ -142,7 +163,7 @@ object GeneratorControl { GeneratorControl.UpdateOwner(target) } //the generator is under attack - GeneratorControl.BroadcastGeneratorEvent(target, 15) + target.Actor ! UnderThreatAlarm() } } }