From 8c7417aabf09becb5c70910fc2b9fae6319e64ff Mon Sep 17 00:00:00 2001 From: FateJH Date: Sun, 27 May 2018 20:59:44 -0400 Subject: [PATCH] added timing so that thr advanced mobile spawn and the router waste away for 20 minutes, while all other vehicles die early at 5 minutes --- .../net/psforever/objects/GlobalDefinitions.scala | 4 ++++ .../objects/definition/VehicleDefinition.scala | 14 ++++++++++++++ pslogin/src/main/scala/WorldSessionActor.scala | 4 ++-- .../scala/services/vehicle/VehicleService.scala | 4 +++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala index d3b9c05f..a1246bbf 100644 --- a/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala +++ b/common/src/main/scala/net/psforever/objects/GlobalDefinitions.scala @@ -16,6 +16,8 @@ import net.psforever.objects.serverobject.tube.SpawnTubeDefinition import net.psforever.objects.vehicles.{SeatArmorRestriction, UtilityType} import net.psforever.types.PlanetSideEmpire +import scala.concurrent.duration._ + object GlobalDefinitions { /* Implants @@ -2716,6 +2718,7 @@ object GlobalDefinitions { ams.Deployment = true ams.DeployTime = 2000 ams.UndeployTime = 2000 + ams.DeconstructionTime = Some(20 minutes) ams.AutoPilotSpeeds = (18, 6) ams.Packet = utilityConverter @@ -2728,6 +2731,7 @@ object GlobalDefinitions { router.Deployment = true router.DeployTime = 2000 router.UndeployTime = 2000 + router.DeconstructionTime = Duration(20, "minutes") router.AutoPilotSpeeds = (16, 6) router.Packet = variantConverter diff --git a/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala b/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala index 5bb11e89..68c7e14e 100644 --- a/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala +++ b/common/src/main/scala/net/psforever/objects/definition/VehicleDefinition.scala @@ -6,6 +6,7 @@ import net.psforever.objects.inventory.InventoryTile import net.psforever.objects.vehicles.UtilityType import scala.collection.mutable +import scala.concurrent.duration._ /** * An object definition system used to construct and retain the parameters of various vehicles. @@ -29,6 +30,7 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId) { private var canCloak : Boolean = false private var canBeOwned : Boolean = true private var serverVehicleOverrideSpeeds : (Int, Int) = (0, 0) + private var deconTime : Option[FiniteDuration] = None Name = "vehicle" Packet = VehicleDefinition.converter @@ -83,6 +85,18 @@ class VehicleDefinition(objectId : Int) extends ObjectDefinition(objectId) { DeployTime } + def DeconstructionTime : Option[FiniteDuration] = deconTime + + def DeconstructionTime_=(time : FiniteDuration) : Option[FiniteDuration] = { + deconTime_=(Some(time)) + DeconstructionTime + } + + def DeconstructionTime_=(time : Option[FiniteDuration]) : Option[FiniteDuration] = { + deconTime = time + DeconstructionTime + } + def UndeployTime : Int = deploymentTime_Undeploy def UndeployTime_=(dtime : Int) : Int = { diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index c4ff7e36..cd0fe938 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -184,7 +184,7 @@ class WorldSessionActor extends Actor with MDCContextAware { case Some(vehicle : Vehicle) => vehicle.Seat(vehicle.PassengerInSeat(player).get).get.Occupant = None if(vehicle.Seats.values.count(_.isOccupied) == 0) { - vehicleService ! VehicleServiceMessage.Decon(RemoverActor.AddTask(vehicle, continent)) //start vehicle decay + vehicleService ! VehicleServiceMessage.Decon(RemoverActor.AddTask(vehicle, continent), vehicle.Definition.DeconstructionTime) //start vehicle decay } vehicleService ! Service.Leave(Some(s"${vehicle.Actor}")) @@ -698,7 +698,7 @@ class WorldSessionActor extends Actor with MDCContextAware { vehicleService ! VehicleServiceMessage(continent.Id, VehicleAction.KickPassenger(player_guid, seat_num, true, obj.GUID)) } if(obj.Seats.values.count(_.isOccupied) == 0) { - vehicleService ! VehicleServiceMessage.Decon(RemoverActor.AddTask(obj, continent)) //start vehicle decay + vehicleService ! VehicleServiceMessage.Decon(RemoverActor.AddTask(obj, continent, obj.Definition.DeconstructionTime)) //start vehicle decay } case Mountable.CanDismount(obj : Mountable, _) => diff --git a/pslogin/src/main/scala/services/vehicle/VehicleService.scala b/pslogin/src/main/scala/services/vehicle/VehicleService.scala index e6c548ee..0bf781f6 100644 --- a/pslogin/src/main/scala/services/vehicle/VehicleService.scala +++ b/pslogin/src/main/scala/services/vehicle/VehicleService.scala @@ -8,6 +8,8 @@ import services.vehicle.support.VehicleRemover import net.psforever.types.DriveState import services.{GenericEventBus, RemoverActor, Service} +import scala.concurrent.duration._ + class VehicleService extends Actor { private val vehicleDecon : ActorRef = context.actorOf(Props[VehicleRemover], "vehicle-decon-agent") private [this] val log = org.log4s.getLogger @@ -147,7 +149,7 @@ class VehicleService extends Actor { VehicleEvents.publish( VehicleServiceResponse(s"/${zone.Id}/Vehicle", Service.defaultPlayerGUID, VehicleResponse.LoadVehicle(vehicle, vtype, vguid, vdata)) ) - vehicleDecon forward RemoverActor.AddTask(vehicle, zone) + vehicleDecon forward RemoverActor.AddTask(vehicle, zone, Some(30 seconds)) //from VehicleSpawnControl case VehicleSpawnPad.DisposeVehicle(vehicle, zone) =>