diff --git a/src/main/scala/net/psforever/actors/session/ChatActor.scala b/src/main/scala/net/psforever/actors/session/ChatActor.scala index a73e15b4..10280294 100644 --- a/src/main/scala/net/psforever/actors/session/ChatActor.scala +++ b/src/main/scala/net/psforever/actors/session/ChatActor.scala @@ -355,6 +355,8 @@ class ChatActor( val soi2 = building.Definition.SOIRadius * building.Definition.SOIRadius Vector3.DistanceSquared(building.Position, position) < soi2 } + case Some(all) if all.toLowerCase.startsWith("all") => + session.zone.Buildings.values case Some(x) => session.zone.Buildings.values.find { _.Name.equalsIgnoreCase(x) }.toList case _ => diff --git a/src/main/scala/net/psforever/actors/session/SessionActor.scala b/src/main/scala/net/psforever/actors/session/SessionActor.scala index d4d9cba8..f28afc5a 100644 --- a/src/main/scala/net/psforever/actors/session/SessionActor.scala +++ b/src/main/scala/net/psforever/actors/session/SessionActor.scala @@ -6833,7 +6833,7 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con //silo capacity sendResponse(PlanetsideAttributeMessage(amenityId, 45, silo.CapacitorDisplay)) //warning lights - sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, if (silo.LowNtuWarningOn) 1 else 0)) + sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 47, silo.LowNtuWarningOn)) if (silo.NtuCapacitor == 0) { sendResponse(PlanetsideAttributeMessage(silo.Owner.GUID, 48, 1)) } diff --git a/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocket.scala b/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocket.scala index 1f995683..3ced71d9 100644 --- a/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocket.scala +++ b/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocket.scala @@ -1,6 +1,6 @@ package net.psforever.objects.serverobject.llu -import akka.actor.ActorContext +import akka.actor.{ActorContext, Props} import net.psforever.objects.GlobalDefinitions import net.psforever.objects.serverobject.structures.Amenity import net.psforever.types.Vector3 @@ -24,9 +24,10 @@ object CaptureFlagSocket { Constructor(GlobalDefinitions.llm_socket, pos)(id, context) } - def Constructor(tdef: CaptureFlagSocketDefinition, pos: Vector3)(id: Int, context: ActorContext) : CaptureFlagSocket = { + def Constructor(tdef: CaptureFlagSocketDefinition, pos: Vector3)(id: Int, context: ActorContext): CaptureFlagSocket = { val obj = CaptureFlagSocket(tdef) obj.Position = pos + obj.Actor = context.actorOf(Props(classOf[CaptureFlagSocketControl], obj), s"${obj.Definition.Name}_$id") obj } } diff --git a/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocketControl.scala b/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocketControl.scala new file mode 100644 index 00000000..894eeaf1 --- /dev/null +++ b/src/main/scala/net/psforever/objects/serverobject/llu/CaptureFlagSocketControl.scala @@ -0,0 +1,20 @@ +// Copyright (c) 2020 PSForever +package net.psforever.objects.serverobject.llu + +import akka.actor.Actor +import net.psforever.objects.serverobject.affinity.FactionAffinityBehavior + +/** + * An `Actor` that handles messages being dispatched to a lattice logic unit (LLU) socket. + * Actually does nothing lol + * @param socket the socket entity being governed + */ +class CaptureFlagSocketControl(socket: CaptureFlagSocket) + extends Actor + with FactionAffinityBehavior.Check { + def FactionObject = socket + + def receive: Receive = { + case _ => ; + } +} diff --git a/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala b/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala index 684549a5..9f993229 100644 --- a/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala +++ b/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSilo.scala @@ -15,6 +15,7 @@ class ResourceSilo extends Amenity with CommonNtuContainer { // For the NTU display bar private var capacitorDisplay: Long = 0 + NtuCapacitor = Definition.MaxNtuCapacitor def MaxNtuCapacitor : Float = Definition.MaxNtuCapacitor diff --git a/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala b/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala index fb873f84..fb906b76 100644 --- a/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala +++ b/src/main/scala/net/psforever/objects/serverobject/resourcesilo/ResourceSiloControl.scala @@ -32,9 +32,10 @@ class ResourceSiloControl(resourceSilo: ResourceSilo) var panelAnimationFunc: (ActorRef, Float) => Unit = PanelAnimation def receive: Receive = { - case "startup" => + case Service.Startup() => resourceSilo.Owner match { case building: Building => + UpdateChargeLevel(amount = 0) building.Actor ! (if (resourceSilo.NtuCapacitor <= 0f ) { BuildingActor.NtuDepleted() } else { diff --git a/src/main/scala/net/psforever/objects/zones/Zone.scala b/src/main/scala/net/psforever/objects/zones/Zone.scala index 92d17f65..1a3843cf 100644 --- a/src/main/scala/net/psforever/objects/zones/Zone.scala +++ b/src/main/scala/net/psforever/objects/zones/Zone.scala @@ -663,7 +663,7 @@ class Zone(val id: String, val map: ZoneMap, zoneNumber: Int) { .flatMap(_.Amenities.filter(_.Definition == GlobalDefinitions.resource_silo)) .collect { case silo: ResourceSilo => - silo.Actor ! "startup" + silo.Actor ! Service.Startup() } //some painfields need to look for their closest door buildings.values diff --git a/src/main/scala/net/psforever/zones/Zones.scala b/src/main/scala/net/psforever/zones/Zones.scala index e9863e96..0de4af21 100644 --- a/src/main/scala/net/psforever/zones/Zones.scala +++ b/src/main/scala/net/psforever/zones/Zones.scala @@ -621,12 +621,13 @@ object Zones { def initResourceSilos(zone: Zone): Unit = { // todo: load silo charge from database - zone.Buildings.values.flatMap { - _.Amenities.collect { - case silo: ResourceSilo => - silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor) - } - } + // todo: load silo charge from this function call +// zone.Buildings.values.flatMap { +// _.Amenities.collect { +// case silo: ResourceSilo => +// silo.Actor ! ResourceSilo.UpdateChargeLevel(silo.MaxNtuCapacitor) +// } +// } } }