reorganized the services.base classes; streamlined the class inheritance structure and param requirements for certain classes; messed up all imports

This commit is contained in:
Fate-JH 2026-02-16 16:57:12 -05:00
parent 775d9dca5e
commit 4dc5d7f01e
149 changed files with 460 additions and 506 deletions

View file

@ -16,13 +16,13 @@ import net.psforever.packet.game.{ObjectCreateMessage, PlayerStateMessageUpstrea
import net.psforever.types._
import net.psforever.services.{RemoverActor, Service, ServiceManager}
import net.psforever.services.avatar._
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ObjectDelete, PlanetsideAttribute, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ConcealPlayer, ObjectDelete, PlanetsideAttribute, ReloadTool, WeaponDryFire}
class AvatarService1Test extends ActorTest {
"AvatarService" should {
"construct" in {
ServiceManager.boot(system)
system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
assert(true)
}
}
@ -32,7 +32,7 @@ class AvatarService2Test extends ActorTest {
"AvatarService" should {
"subscribe" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
assert(true)
}
@ -43,7 +43,7 @@ class AvatarService3Test extends ActorTest {
"AvatarService" should {
ServiceManager.boot(system)
"subscribe to a specific channel" in {
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! Service.Leave()
assert(true)
@ -55,7 +55,7 @@ class AvatarService4Test extends ActorTest {
"AvatarService" should {
"subscribe" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! Service.LeaveAll()
assert(true)
@ -67,7 +67,7 @@ class AvatarService5Test extends ActorTest {
"AvatarService" should {
"pass an unhandled message" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! "hello"
expectNoMessage()
@ -79,7 +79,7 @@ class ArmorChangedTest extends ActorTest {
"AvatarService" should {
"pass ArmorChanged" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), AvatarAction.ArmorChanged(ExoSuitType.Reinforced, 0))
expectMsg(
@ -97,17 +97,17 @@ class ConcealPlayerTest extends ActorTest {
"AvatarService" should {
"pass ConcealPlayer" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", AvatarAction.ConcealPlayer(PlanetSideGUID(10)))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarAction.ConcealPlayer(PlanetSideGUID(10))))
service ! AvatarServiceMessage("test", ConcealPlayer(PlanetSideGUID(10)))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), ConcealPlayer(PlanetSideGUID(10))))
}
}
}
class EquipmentInHandTest extends ActorTest {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), "release-test-service")
val service = system.actorOf(Props(classOf[AvatarService]), "release-test-service")
val toolDef = GlobalDefinitions.beamer
val tool = Tool(toolDef)
tool.GUID = PlanetSideGUID(40)
@ -134,7 +134,7 @@ class EquipmentInHandTest extends ActorTest {
class DroptItemTest extends ActorTest {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), "release-test-service")
val service = system.actorOf(Props(classOf[AvatarService]), "release-test-service")
val toolDef = GlobalDefinitions.beamer
val tool = Tool(toolDef)
tool.Position = Vector3(1, 2, 3)
@ -173,7 +173,7 @@ class LoadPlayerTest extends ActorTest {
"AvatarService" should {
"pass LoadPlayer" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
//no parent data
service ! AvatarServiceMessage(
@ -197,7 +197,7 @@ class ObjectDeleteTest extends ActorTest {
"AvatarService" should {
"pass ObjectDelete" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), ObjectDelete(PlanetSideGUID(11)))
expectMsg(
@ -216,7 +216,7 @@ class ObjectHeldTest extends ActorTest {
"AvatarService" should {
"pass ObjectHeld" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), AvatarAction.ObjectHeld(1, 2))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarAction.ObjectHeld(1, 2)))
@ -228,7 +228,7 @@ class PutDownFDUTest extends ActorTest {
"AvatarService" should {
"pass PutDownFDU" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", AvatarAction.PutDownFDU(PlanetSideGUID(10)))
expectMsg(
@ -242,7 +242,7 @@ class PlanetsideAttributeTest extends ActorTest {
"AvatarService" should {
"pass PlanetsideAttribute" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), PlanetsideAttribute(PlanetSideGUID(10), 5, 1200L))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), PlanetsideAttribute(PlanetSideGUID(10), 5, 1200L)))
@ -271,7 +271,7 @@ class PlayerStateTest extends ActorTest {
"AvatarService" should {
"pass PlayerState" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage(
"test",
@ -322,7 +322,7 @@ class PickupItemTest extends ActorTest {
"pass PickUpItem" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! PickupItemMessage("test", AvatarAction.PickupItem(tool), Zone.Nowhere)
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), ObjectDelete(tool.GUID, 0)))
@ -333,10 +333,10 @@ class ReloadTest extends ActorTest {
"AvatarService" should {
"pass Reload" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), AvatarAction.Reload(PlanetSideGUID(40)))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), AvatarAction.Reload(PlanetSideGUID(40))))
service ! AvatarServiceMessage("test", PlanetSideGUID(10), ReloadTool(PlanetSideGUID(40)))
expectMsg(AvatarServiceResponse("/test/Avatar", PlanetSideGUID(10), ReloadTool(PlanetSideGUID(40))))
}
}
}
@ -348,7 +348,7 @@ class ChangeAmmoTest extends ActorTest {
"AvatarService" should {
"pass ChangeAmmo" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage(
"test",
@ -387,7 +387,7 @@ class ChangeFireModeTest extends ActorTest {
"AvatarService" should {
"pass ChangeFireMode" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), AvatarAction.ChangeFireMode(PlanetSideGUID(40), 0))
expectMsg(
@ -401,7 +401,7 @@ class ChangeFireStateStartTest extends ActorTest {
"AvatarService" should {
"pass ChangeFireState_Start" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), ChangeFireState_Start(PlanetSideGUID(40)))
expectMsg(
@ -419,7 +419,7 @@ class ChangeFireStateStopTest extends ActorTest {
"AvatarService" should {
"pass ChangeFireState_Stop" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), ChangeFireState_Stop(PlanetSideGUID(40)))
expectMsg(
@ -437,7 +437,7 @@ class WeaponDryFireTest extends ActorTest {
"AvatarService" should {
"pass WeaponDryFire" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage("test", PlanetSideGUID(10), WeaponDryFire(PlanetSideGUID(40)))
expectMsg(
@ -453,7 +453,7 @@ class AvatarStowEquipmentTest extends ActorTest {
"AvatarService" should {
"pass StowEquipment" in {
ServiceManager.boot(system)
val service = system.actorOf(Props(classOf[AvatarService], Zone.Nowhere), AvatarServiceTest.TestName)
val service = system.actorOf(Props(classOf[AvatarService]), AvatarServiceTest.TestName)
service ! Service.Join("test")
service ! AvatarServiceMessage(
"test",

View file

@ -49,7 +49,7 @@ import net.psforever.objects.vital.{DamagingActivity, HealFromImplant, HealingAc
import net.psforever.packet.game.objectcreate.{BasicCharacterData, ObjectClass, RibbonBars}
import net.psforever.packet.game.{Friend => GameFriend, _}
import net.psforever.persistence
import net.psforever.services.base.messages.{SendResponse, PlanetsideAttribute}
import net.psforever.services.base.message.{SendResponse, PlanetsideAttribute}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.types.{
CharacterSex,

View file

@ -18,12 +18,13 @@ import net.psforever.services.CavernRotationService
import net.psforever.services.CavernRotationService.SendCavernRotationUpdates
import net.psforever.services.ServiceManager.LookupResult
import net.psforever.services.account.{PlayerToken, ReceiveAccountData}
import net.psforever.services.avatar.AvatarServiceResponse
import net.psforever.services.avatar.AvatarStamp
import net.psforever.services.base.envelope.{GenericResponseEnvelope, Undelivered}
import net.psforever.services.chat.ChatService
import net.psforever.services.galaxy.GalaxyServiceResponse
import net.psforever.services.local.LocalServiceResponse
import net.psforever.services.galaxy.GalaxyStamp
import net.psforever.services.local.LocalStamp
import net.psforever.services.teamwork.SquadServiceResponse
import net.psforever.services.vehicle.VehicleServiceResponse
import net.psforever.services.vehicle.VehicleStamp
import org.joda.time.LocalDateTime
import org.log4s.MDC
@ -170,27 +171,32 @@ class SessionActor(middlewareActor: typed.ActorRef[MiddlewareActor.Command], con
case packet: PlanetSideGamePacket =>
handleGamePkt(packet)
case AvatarServiceResponse(toChannel, guid, reply) =>
logic.avatarResponse.handle(toChannel, guid, reply)
case SquadServiceResponse(_, excluded, reply) =>
logic.squad.handle(reply, excluded)
case GalaxyServiceResponse(_, reply) =>
logic.galaxy.handle(reply)
case LocalServiceResponse(toChannel, guid, reply) =>
logic.local.handle(toChannel, guid, reply)
case envelope: GenericResponseEnvelope =>
val GenericResponseEnvelope(toChannel, guid, reply) = envelope
envelope.stamp match {
case AvatarStamp =>
logic.avatarResponse.handle(toChannel, guid, reply)
case LocalStamp =>
logic.local.handle(toChannel, guid, reply)
case VehicleStamp =>
logic.vehicleResponse.handle(toChannel, guid, reply)
case GalaxyStamp =>
logic.galaxy.handle(reply)
case Undelivered =>
log.error(s"received a message's response that was not delivered by an event system - $reply")
case unknownStamp =>
log.error(s"received a message's response from an unknown event system - stamp: $unknownStamp")
}
case Mountable.MountMessages(tplayer, reply) =>
logic.mountResponse.handle(tplayer, reply)
case SquadServiceResponse(_, excluded, response) =>
logic.squad.handle(response, excluded)
case Terminal.TerminalMessage(tplayer, msg, order) =>
logic.terminals.handle(tplayer, msg, order)
case VehicleServiceResponse(toChannel, guid, reply) =>
logic.vehicleResponse.handle(toChannel, guid, reply)
case ChatService.MessageResponse(fromSession, message, _) =>
logic.chat.handleIncomingMessage(message, fromSession)

View file

@ -13,8 +13,7 @@ import net.psforever.objects.serverobject.mount.Mountable
import net.psforever.objects.vital.RevivingActivity
import net.psforever.packet.game.{AvatarImplantMessage, CreateShortcutMessage, HitHint, ImplantAction}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceResponse}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ConcealPlayer, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import net.psforever.types.ImplantType
//
@ -430,9 +429,6 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
case SendResponse(msgs) =>
msgs.foreach(sendResponse)
case AvatarAction.SendResponseTargeted(targetGuid, msg) if resolvedPlayerGuid == targetGuid =>
sendResponse(msg)
/* common messages (maybe once every respawn) */
case ReloadTool(itemGuid)
if isNotSameTarget && ops.lastSeenStreamMessage.get(guid.guid).exists { _.visible } =>
@ -505,7 +501,7 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
case AvatarAction.ChangeFireMode(itemGuid, mode) if isNotSameTarget =>
sendResponse(ChangeFireModeMessage(itemGuid, mode))
case AvatarAction.ConcealPlayer(_) =>
case ConcealPlayer(_) =>
sendResponse(GenericObjectActionMessage(guid, code=9))
case AvatarAction.EnvironmentalDamage(_, _, _) =>

View file

@ -17,7 +17,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.game.{ChatMsg, SetChatFilterMessage}
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.{ObjectDelete, SetEmpire}
import net.psforever.services.base.message.{ObjectDelete, SetEmpire}
import net.psforever.services.chat.{ChatChannel, DefaultChannel, SpectatorChannel, SquadChannel}
import net.psforever.types.ChatMessageType.{CMT_TOGGLESPECTATORMODE, CMT_TOGGLE_GM}
import net.psforever.types.{ChatMessageType, PlanetSideEmpire}

View file

@ -11,7 +11,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.game.{ChatMsg, ObjectCreateDetailedMessage, PlanetsideAttributeMessage}
import net.psforever.packet.game.objectcreate.RibbonBars
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.chat.{CustomerServiceChannel, SpectatorChannel}
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{ChatMessageType, MeritCommendation, PlanetSideGUID}

View file

@ -35,7 +35,7 @@ import net.psforever.packet.game.OutfitEventAction.{Initial, OutfitInfo, OutfitR
import net.psforever.packet.game.{ActionCancelMessage, AvatarFirstTimeEventMessage, AvatarImplantMessage, AvatarJumpMessage, BattleplanMessage, BindPlayerMessage, BugReportMessage, ChangeFireModeMessage, ChangeShortcutBankMessage, CharacterCreateRequestMessage, CharacterRequestMessage, ChatMsg, CollisionIs, ConnectToWorldRequestMessage, CreateShortcutMessage, DeadState, DeployObjectMessage, DisplayedAwardMessage, DropItemMessage, EmoteMsg, FacilityBenefitShieldChargeRequestMessage, FriendsRequest, GenericAction, GenericActionMessage, GenericCollisionMsg, GenericObjectActionAtPositionMessage, GenericObjectActionMessage, GenericObjectStateMsg, HitHint, InvalidTerrainMessage, LootItemMessage, MoveItemMessage, ObjectDetectedMessage, ObjectHeldMessage, OutfitEvent, OutfitMemberEvent, OutfitMembershipRequest, OutfitMembershipResponse, OutfitRequest, OutfitRequestAction, PickupItemMessage, PlanetsideAttributeMessage, PlayerStateMessageUpstream, RequestDestroyMessage, TargetingImplantRequest, TerrainCondition, TradeMessage, UnuseItemMessage, UseItemMessage, VoiceHostInfo, VoiceHostRequest, ZipLineMessage}
import net.psforever.services.RemoverActor
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage, CorpseEnvelope}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.types.{CapacitorStateType, ChatMessageType, Cosmetic, ExoSuitType, PlanetSideEmpire, PlanetSideGUID, Vector3}
import scala.concurrent.duration._

View file

@ -15,7 +15,7 @@ import net.psforever.objects.serverobject.turret.{FacilityTurret, WeaponTurret}
import net.psforever.objects.vehicles.AccessPermissionGroup
import net.psforever.objects.vital.InGameHistory
import net.psforever.packet.game.{ChatMsg, DelayedPathMountMsg, DismountVehicleCargoMsg, DismountVehicleMsg, GenericObjectActionMessage, MountVehicleCargoMsg, MountVehicleMsg, ObjectDetachMessage, PlanetsideAttributeMessage, PlayerStasisMessage, PlayerStateShiftMessage, ShiftState}
import net.psforever.services.base.messages.{SendResponse, SetEmpire}
import net.psforever.services.base.message.{SendResponse, SetEmpire}
import net.psforever.services.local.LocalServiceMessage
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{BailType, ChatMessageType, DriveState, PlanetSideGUID, Vector3}

View file

@ -8,7 +8,7 @@ import net.psforever.objects.{Player, Session, Vehicle}
import net.psforever.objects.zones.Zone
import net.psforever.packet.PlanetSidePacket
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import net.psforever.services.chat.SpectatorChannel
import net.psforever.services.teamwork.{SquadAction, SquadServiceMessage}
import net.psforever.types.{ChatMessageType, SquadRequestType}

View file

@ -14,7 +14,7 @@ import net.psforever.objects.zones.interaction.InteractsWithZone
import net.psforever.packet.game.{ChildObjectStateMessage, DeployRequestMessage, FrameVehicleStateMessage, PlanetsideAttributeMessage, VehicleStateMessage, VehicleSubStateMessage}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.CachedMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{DriveState, Vector3}

View file

@ -13,8 +13,7 @@ import net.psforever.objects.vital.RevivingActivity
import net.psforever.objects.vital.interaction.Adversarial
import net.psforever.packet.game.{AvatarImplantMessage, CreateShortcutMessage, ImplantAction, PlanetsideStringAttributeMessage}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ConcealPlayer, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import net.psforever.types.ImplantType
import scala.concurrent.duration._
@ -484,9 +483,6 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
case SendResponse(msgs) =>
msgs.foreach(sendResponse)
case AvatarAction.SendResponseTargeted(targetGuid, msg) if resolvedPlayerGuid == targetGuid =>
sendResponse(msg)
/* common messages (maybe once every respawn) */
case ReloadTool(itemGuid)
if isNotSameTarget && ops.lastSeenStreamMessage.get(guid.guid).exists { _.visible } =>
@ -613,7 +609,7 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
case AvatarAction.ChangeFireMode(itemGuid, mode) if isNotSameTarget =>
sendResponse(ChangeFireModeMessage(itemGuid, mode))
case AvatarAction.ConcealPlayer(_) =>
case ConcealPlayer(_) =>
sendResponse(GenericObjectActionMessage(guid, code=9))
case AvatarAction.EnvironmentalDamage(_, _, _) =>

View file

@ -5,8 +5,7 @@ import akka.actor.{ActorContext, ActorRef, typed}
import net.psforever.actors.session.AvatarActor
import net.psforever.actors.session.support.{GalaxyHandlerFunctions, SessionData, SessionGalaxyHandlers}
import net.psforever.packet.game.{BroadcastWarpgateUpdateMessage, FriendsResponse, HotSpotUpdateMessage, ZoneInfoMessage, ZonePopulationUpdateMessage, HotSpotInfo => PacketHotSpotInfo}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.{EventResponse, SendResponse}
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceMessage}
import net.psforever.types.{MemberAction, PlanetSideEmpire}

View file

@ -44,7 +44,7 @@ import net.psforever.packet.game.{ActionCancelMessage, ActionResultMessage, Avat
import net.psforever.services.account.{AccountPersistenceService, RetrieveAccountData}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.CachedMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.local.support.CaptureFlagManager
import net.psforever.types.{CapacitorStateType, ChatMessageType, Cosmetic, ExoSuitType, ImplantType, PlanetSideEmpire, PlanetSideGUID, Vector3}
import net.psforever.util.Config

View file

@ -9,8 +9,7 @@ import net.psforever.objects.serverobject.doors.Door
import net.psforever.objects.vehicles.MountableWeapons
import net.psforever.objects.{BoomerDeployable, ExplosiveDeployable, TelepadDeployable, Tool, TurretDeployable}
import net.psforever.packet.game.{ChatMsg, DeployableObjectsInfoMessage, GenericActionMessage, GenericObjectActionMessage, GenericObjectStateMsg, HackMessage, HackState, HackState1, InventoryStateMessage, ObjectAttachMessage, ObjectCreateMessage, ObjectDeleteMessage, ObjectDetachMessage, OrbitalShuttleTimeMsg, PadAndShuttlePair, PlanetsideAttributeMessage, ProximityTerminalUseMessage, SetEmpireMessage, TriggerEffectMessage, TriggerSoundMessage, TriggeredSound, VehicleStateMessage}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{GenericObjectAction, ObjectDelete, PlanetsideAttribute, SendResponse, SetEmpire}
import net.psforever.services.base.message.{EventResponse, GenericObjectAction, ObjectDelete, PlanetsideAttribute, SendResponse, SetEmpire}
import net.psforever.services.{InterstellarClusterService, Service}
import net.psforever.services.local.LocalAction
import net.psforever.types.{ChatMessageType, PlanetSideGUID, SpawnGroup}
@ -154,9 +153,6 @@ class LocalHandlerLogic(val ops: SessionLocalHandlers, implicit val context: Act
case LocalAction.GenericActionMessage(actionNumber) =>
sendResponse(GenericActionMessage(actionNumber))
case LocalAction.ChatMessage(msg) =>
sendResponse(msg)
case LocalAction.LluSpawned(llu) =>
// Create LLU on client
sendResponse(ObjectCreateMessage(

View file

@ -16,7 +16,7 @@ import net.psforever.objects.serverobject.turret.{FacilityTurret, WeaponTurret}
import net.psforever.objects.vehicles.AccessPermissionGroup
import net.psforever.objects.vital.InGameHistory
import net.psforever.packet.game.{ChatMsg, DelayedPathMountMsg, DismountVehicleCargoMsg, DismountVehicleMsg, GenericObjectActionMessage, MountVehicleCargoMsg, MountVehicleMsg, ObjectDetachMessage, PlanetsideAttributeMessage, PlayerStasisMessage, PlayerStateShiftMessage, ShiftState}
import net.psforever.services.base.messages.{SendResponse, SetEmpire}
import net.psforever.services.base.message.{SendResponse, SetEmpire}
import net.psforever.services.local.LocalServiceMessage
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{BailType, ChatMessageType, DriveState, PlanetSideGUID, Vector3}

View file

@ -14,8 +14,7 @@ import net.psforever.objects.serverobject.pad.VehicleSpawnPad
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.packet.game.{ChangeAmmoMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, ChatMsg, ChildObjectStateMessage, DeadState, DeployRequestMessage, DismountVehicleMsg, FrameVehicleStateMessage, GenericObjectActionMessage, HitHint, InventoryStateMessage, ObjectAttachMessage, ObjectCreateDetailedMessage, ObjectCreateMessage, ObjectDeleteMessage, ObjectDetachMessage, PlanetsideAttributeMessage, ReloadMessage, ServerVehicleOverrideMsg, VehicleStateMessage, WeaponDryFireMessage}
import net.psforever.services.Service
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.local.support.CaptureFlagManager
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceResponse}
import net.psforever.types.{BailType, ChatMessageType, PlanetSideGUID, Vector3}

View file

@ -8,8 +8,7 @@ import net.psforever.objects.Players
import net.psforever.objects.avatar.scoring.Kill
import net.psforever.objects.sourcing.PlayerSource
import net.psforever.packet.game.{AvatarImplantMessage, ImplantAction}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ConcealPlayer, EventResponse, GenericObjectAction, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, SetEmpire, WeaponDryFire}
import scala.concurrent.duration._
//
@ -416,9 +415,6 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
sendResponse(msg)
}
case AvatarAction.SendResponseTargeted(targetGuid, msg) if resolvedPlayerGuid == targetGuid =>
sendResponse(msg)
/* common messages (maybe once every respawn) */
case ReloadTool(itemGuid)
if isNotSameTarget && ops.lastSeenStreamMessage.get(guid.guid).exists { _.visible } =>
@ -504,7 +500,7 @@ class AvatarHandlerLogic(val ops: SessionAvatarHandlers, implicit val context: A
case AvatarAction.ChangeFireMode(itemGuid, mode) if isNotSameTarget =>
sendResponse(ChangeFireModeMessage(itemGuid, mode))
case AvatarAction.ConcealPlayer(_) =>
case ConcealPlayer(_) =>
sendResponse(GenericObjectActionMessage(guid, code=9))
case AvatarAction.EnvironmentalDamage(_, _, _) =>

View file

@ -18,7 +18,7 @@ import net.psforever.packet.game.{ActionCancelMessage, AvatarFirstTimeEventMessa
import net.psforever.services.account.AccountPersistenceService
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.CachedMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.types.{ExoSuitType, Vector3}
import scala.concurrent.duration.DurationInt

View file

@ -12,7 +12,7 @@ import net.psforever.objects.serverobject.mount.Mountable
import net.psforever.objects.serverobject.terminals.implant.ImplantTerminalMech
import net.psforever.objects.vital.InGameHistory
import net.psforever.packet.game.{DelayedPathMountMsg, DismountVehicleCargoMsg, DismountVehicleMsg, GenericObjectActionMessage, MountVehicleCargoMsg, MountVehicleMsg, ObjectDetachMessage, PlayerStasisMessage, PlayerStateShiftMessage, ShiftState}
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.LocalServiceMessage
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}

View file

@ -12,7 +12,7 @@ import net.psforever.packet.game.{DeployableInfo, DeployableObjectsInfoMessage,
import net.psforever.packet.game.objectcreate.{ObjectClass, ObjectCreateMessageParent, RibbonBars}
import net.psforever.services.Service
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import net.psforever.services.chat.SpectatorChannel
import net.psforever.services.teamwork.{SquadAction, SquadServiceMessage}
import net.psforever.types.{CapacitorStateType, ChatMessageType, ExoSuitType, MeritCommendation, SquadRequestType}

View file

@ -8,8 +8,7 @@ import net.psforever.objects.equipment.Equipment
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.packet.game.{ChangeAmmoMessage, ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, ChildObjectStateMessage, DeadState, DeployRequestMessage, DismountVehicleMsg, FrameVehicleStateMessage, GenericObjectActionMessage, InventoryStateMessage, ObjectAttachMessage, ObjectCreateDetailedMessage, ObjectCreateMessage, ObjectDeleteMessage, ObjectDetachMessage, PlanetsideAttributeMessage, ReloadMessage, ServerVehicleOverrideMsg, VehicleStateMessage, WeaponDryFireMessage}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, GenericObjectAction, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, EventResponse, GenericObjectAction, ObjectDelete, PlanetsideAttribute, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceResponse}
import net.psforever.types.{BailType, PlanetSideGUID, Vector3}

View file

@ -19,7 +19,7 @@ import net.psforever.objects.zones.blockmap.BlockMapEntity
import net.psforever.objects.zones.exp.ToDatabase
import net.psforever.services.RemoverActor
import net.psforever.services.avatar.GroundEnvelope
import net.psforever.services.base.messages.{PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{PlanetsideAttribute, SendResponse}
import net.psforever.services.local.support.HackCaptureActor
import net.psforever.services.local.{CaptureMessage, LocalAction, LocalServiceMessage}

View file

@ -9,8 +9,7 @@ import net.psforever.packet.game.objectcreate.ConstructorData
import net.psforever.objects.zones.exp
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage, AvatarServiceResponse}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.{EventResponse, SendResponse}
import net.psforever.services.chat.OutfitChannel
import scala.collection.mutable

View file

@ -3,7 +3,7 @@ package net.psforever.actors.session.support
import akka.actor.{ActorContext, ActorRef, typed}
import net.psforever.packet.game.FriendsResponse
import net.psforever.services.base.EventResponse
import net.psforever.services.base.message.EventResponse
import scala.annotation.unused
//

View file

@ -7,7 +7,7 @@ import net.psforever.objects.ce.Deployable
import net.psforever.objects.guid.{GUIDTask, TaskWorkflow}
import net.psforever.objects.serverobject.interior.Sidedness
import net.psforever.packet.game.{GenericObjectActionMessage, ObjectDeleteMessage, PlanetsideAttributeMessage, TriggerEffectMessage}
import net.psforever.services.base.EventResponse
import net.psforever.services.base.message.EventResponse
import net.psforever.types.{PlanetSideGUID, Vector3}
trait LocalHandlerFunctions extends CommonSessionInterfacingFunctionality {

View file

@ -9,7 +9,7 @@ import net.psforever.objects.vehicles.{CargoBehavior, MountableWeapons}
import net.psforever.objects.vital.InGameHistory
import net.psforever.packet.game.{DismountVehicleCargoMsg, GenericObjectActionMessage, InventoryStateMessage, MountVehicleCargoMsg, MountVehicleMsg, ObjectAttachMessage, ObjectDetachMessage, PlanetsideAttributeMessage}
import net.psforever.services.base.CachedMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{BailType, PlanetSideGUID, Vector3}
//

View file

@ -9,7 +9,7 @@ import net.psforever.packet.game.OutfitEventAction.{Initial, Leaving, OutfitInfo
import net.psforever.packet.game.OutfitMembershipResponse.PacketType.CreateResponse
import net.psforever.packet.game._
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.chat.OutfitChannel
import net.psforever.types.ChatMessageType
import net.psforever.util.Config

View file

@ -2,7 +2,7 @@
package net.psforever.actors.session.support
import akka.actor.{ActorContext, ActorRef, typed}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.teamwork.SquadServiceResponse
import scala.collection.mutable

View file

@ -5,7 +5,7 @@ import akka.actor.{ActorContext, ActorRef, typed}
import net.psforever.actors.session.AvatarActor
import net.psforever.objects.Vehicle
import net.psforever.packet.game.ChatMsg
import net.psforever.services.base.EventResponse
import net.psforever.services.base.message.EventResponse
import net.psforever.types.{ChatMessageType, DriveState, PlanetSideGUID}
trait VehicleHandlerFunctions extends CommonSessionInterfacingFunctionality {

View file

@ -29,7 +29,7 @@ import net.psforever.objects.zones.exp.ToDatabase
import net.psforever.packet.game.UplinkRequest
import net.psforever.services.Service
import net.psforever.services.base.CachedMessage
import net.psforever.services.base.messages.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.base.message.{ChangeAmmo, ChangeFireState_Start, ChangeFireState_Stop, ReloadTool, SendResponse, WeaponDryFire}
import net.psforever.services.local.LocalServiceMessage
import net.psforever.types.{ChatMessageType, PlanetSideEmpire, ValidPlanetSideGUID, Vector3}
import net.psforever.util.Config

View file

@ -23,7 +23,7 @@ import net.psforever.objects.zones.blockmap.BlockMapEntity
import net.psforever.packet.game.GenericAction.FirstPersonViewWithEffect
import net.psforever.packet.game.{CampaignStatistic, ChangeFireStateMessage_Start, CloudInfo, GenericActionMessage, GenericObjectActionEnum, HackState7, MailMessage, ObjectDetectedMessage, SessionStatistic, StormInfo, TriggeredSound, TrainingZoneMessage, WeatherMessage}
import net.psforever.services.avatar.{CorpseEnvelope, ReleaseMessage}
import net.psforever.services.base.messages.{GenericObjectAction, ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{GenericObjectAction, ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.chat.DefaultChannel
import scala.concurrent.duration._

View file

@ -11,7 +11,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.PlanetSideGamePacket
import net.psforever.packet.game.ContinentalLockUpdateMessage
import net.psforever.persistence
import net.psforever.services.base.messages.{SendResponse, SetEmpire}
import net.psforever.services.base.message.{SendResponse, SetEmpire}
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceMessage}
import net.psforever.services.local.LocalServiceMessage
import net.psforever.services.{InterstellarClusterService, ServiceManager}

View file

@ -20,7 +20,7 @@ import net.psforever.objects.zones.exp.{ExperienceCalculator, SupportExperienceC
import net.psforever.packet.game.{BuildingInfoUpdateMessage, PlanetsideAttributeMessage}
import net.psforever.util.Database._
import net.psforever.persistence
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.LocalServiceMessage
import scala.collection.mutable

View file

@ -16,7 +16,7 @@ import net.psforever.objects.sourcing.PlayerSource
import net.psforever.packet.game.PlanetsideAttributeMessage
import net.psforever.services.InterstellarClusterService
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{GenericObjectAction, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{GenericObjectAction, PlanetsideAttribute, SendResponse}
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceMessage}
import net.psforever.services.local.{CaptureMessage, HackClearMessage, LocalServiceMessage}
import net.psforever.services.local.support.{HackCaptureActor, HackClearActor}

View file

@ -16,7 +16,7 @@ import net.psforever.objects.vital.TerminalUsedActivity
import net.psforever.objects.zones.Zone
import net.psforever.types.{ExoSuitType, PlanetSideGUID, TransactionType, Vector3}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future

View file

@ -12,7 +12,7 @@ import net.psforever.objects.vital.etc.TriggerUsedReason
import net.psforever.objects.vital.interaction.DamageInteraction
import net.psforever.objects.zones.Zone
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.types.PlanetSideEmpire

View file

@ -12,7 +12,7 @@ import net.psforever.objects.serverobject.{CommonMessages, PlanetSideServerObjec
import net.psforever.objects.sourcing.{PlayerSource, SourceEntry, TurretSource}
import net.psforever.objects.vital.{DismountingActivity, InGameActivity, MountingActivity, ShieldCharge}
import net.psforever.packet.game.HackState1
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.vehicle.VehicleServiceMessage
import scala.annotation.unused

View file

@ -21,7 +21,7 @@ import net.psforever.packet.game._
import net.psforever.types.{ChatMessageType, ExoSuitType, PlanetSideGUID, Vector3}
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.{ObjectDelete, SendResponse}
import net.psforever.services.base.message.{ObjectDelete, SendResponse}
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import scala.annotation.tailrec

View file

@ -13,7 +13,7 @@ import net.psforever.objects.serverobject.repair.RepairableEntity
import net.psforever.objects.vital.SimpleResolutions
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.types.{PlanetSideGUID, Vector3}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.services.vehicle.VehicleServiceMessage

View file

@ -13,7 +13,7 @@ import net.psforever.objects.serverobject.hackable.Hackable
import net.psforever.objects.serverobject.repair.RepairableEntity
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.objects.vital.resolution.ResolutionCalculations
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.types.PlanetSideGUID
import net.psforever.services.vehicle.VehicleServiceMessage

View file

@ -4,7 +4,7 @@ package net.psforever.objects
import net.psforever.objects.equipment.ChargeFireModeDefinition
import net.psforever.packet.game.QuantityUpdateMessage
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
object Tools {
/**

View file

@ -14,7 +14,7 @@ import net.psforever.packet.game.{ChatMsg, FrameVehicleStateMessage, GenericObje
import net.psforever.types.{ChatMessageType, DriveState, PlanetSideEmpire, PlanetSideGUID, Vector3}
import net.psforever.services.Service
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{GenericObjectAction, PlanetsideAttribute, SendResponse, SetEmpire}
import net.psforever.services.base.message.{GenericObjectAction, PlanetsideAttribute, SendResponse, SetEmpire}
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}

View file

@ -9,7 +9,7 @@ import net.psforever.packet.game.{ObjectAttachMessage, ObjectCreateDetailedMessa
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.types.{PlanetSideEmpire, Vector3}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{ObjectDelete, SendResponse}
import net.psforever.services.base.message.{ObjectDelete, SendResponse}
class CorpseControl(player: Player) extends Actor with ContainableBehavior {
def ContainerObject = player

View file

@ -36,8 +36,7 @@ import net.psforever.objects.vital.collision.CollisionReason
import net.psforever.objects.vital.etc.{PainboxReason, SuicideReason}
import net.psforever.objects.vital.interaction.{DamageInteraction, DamageResult}
import net.psforever.packet.PlanetSideGamePacket
import net.psforever.services.base.EventMessage
import net.psforever.services.base.messages.{HintsAtAttacker, ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{EventMessage, HintsAtAttacker, ObjectDelete, PlanetsideAttribute, SendResponse}
import org.joda.time.{LocalDateTime, Seconds}
import scala.concurrent.duration._

View file

@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.environment.{EnvironmentAttribute, Env
import net.psforever.objects.serverobject.environment.interaction.{InteractionWith, RespondsToZoneEnvironment}
import net.psforever.objects.serverobject.interior.{Sidedness, TraditionalInteriorAware}
import net.psforever.objects.zones.interaction.InteractsWithZone
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.types.Vector3
import scala.annotation.unused

View file

@ -8,7 +8,7 @@ import net.psforever.objects.serverobject.shuttle.OrbitalShuttlePad
import net.psforever.objects.zones.interaction.InteractsWithZone
import net.psforever.packet.game.{ChatMsg, PlayerStateShiftMessage, ShiftState}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.hart.ShuttleState
import net.psforever.types.ChatMessageType

View file

@ -8,7 +8,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.game._
import net.psforever.services.Service
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SetEmpire
import net.psforever.services.base.message.SetEmpire
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.types.PlanetSideEmpire

View file

@ -9,7 +9,7 @@ import net.psforever.objects.vehicles.Utility.InternalTelepad
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.{GenericObjectActionMessage, ObjectCreateMessage, ObjectDeleteMessage}
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.types.PlanetSideGUID

View file

@ -10,7 +10,7 @@ import net.psforever.objects.vital.RepairFromArmorSiphon
import net.psforever.objects.vital.etc.{ArmorSiphonModifiers, ArmorSiphonReason}
import net.psforever.objects.vital.interaction.DamageInteraction
import net.psforever.packet.game.QuantityUpdateMessage
import net.psforever.services.base.messages.{PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{PlanetsideAttribute, SendResponse}
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types.PlanetSideGUID

View file

@ -8,7 +8,7 @@ import net.psforever.objects.vehicles.MountedWeapons
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.objects.vital.projectile.ProjectileReason
import net.psforever.objects.zones.{Zone, ZoneAware}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.types.Vector3
import net.psforever.services.vehicle.VehicleServiceMessage

View file

@ -7,7 +7,7 @@ import net.psforever.objects.serverobject.containable.{Containable, ContainableB
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.packet.game.{ObjectAttachMessage, ObjectCreateDetailedMessage, ObjectDetachMessage}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{ObjectDelete, SendResponse}
import net.psforever.services.base.message.{ObjectDelete, SendResponse}
import net.psforever.types.{PlanetSideEmpire, Vector3}
/**

View file

@ -4,7 +4,7 @@ package net.psforever.objects.serverobject.damage
import net.psforever.objects.serverobject.structures.Amenity
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
/**
* The "control" `Actor` mixin for damage-handling code

View file

@ -9,7 +9,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.types.PlanetSideGUID
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
/**
* The "control" `Actor` mixin for damage-handling code,

View file

@ -8,7 +8,7 @@ import net.psforever.objects.vital.interaction.{DamageInteraction, DamageResult}
import net.psforever.packet.game.DamageWithPositionMessage
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.{HintsAtAttacker, SendResponse}
import net.psforever.services.base.message.{HintsAtAttacker, SendResponse}
/**
* Functions to assist other damage-dealing code for objects that contain users.

View file

@ -13,7 +13,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.objects.zones.exp.ToDatabase
import net.psforever.packet.game.DamageWithPositionMessage
import net.psforever.services.Service
import net.psforever.services.base.messages.{PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{PlanetsideAttribute, SendResponse}
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types.Vector3

View file

@ -10,7 +10,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.game.DamageWithPositionMessage
import net.psforever.types.Vector3
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.support.SupportActor
import net.psforever.services.vehicle.support.TurretUpgrader
import net.psforever.services.vehicle.{TurretMessage, VehicleServiceMessage}

View file

@ -14,7 +14,7 @@ import net.psforever.objects.zones.Zone
import net.psforever.packet.game.TriggerEffectMessage
import net.psforever.types.{PlanetSideGeneratorState, Vector3}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

View file

@ -12,7 +12,7 @@ import net.psforever.objects.zones.blockmap.BlockMapEntity
import net.psforever.packet.game.{GenericObjectActionMessage, HackMessage, HackState, HackState1, HackState7, TriggeredSound}
import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.support.HackClearActor
import net.psforever.services.local.{HackClearMessage, HackEntityMessage, LocalAction, LocalServiceMessage}

View file

@ -5,7 +5,7 @@ import net.psforever.objects.serverobject.interior.Sidedness
import net.psforever.objects.{Player, Vehicle}
import net.psforever.objects.serverobject.structures.Amenity
import net.psforever.objects.serverobject.terminals.Terminal
import net.psforever.services.base.SelfRespondingEvent
import net.psforever.services.base.message.SelfRespondingEvent
import net.psforever.types.PlanetSideGUID
/**

View file

@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.structures.Amenity
import net.psforever.objects.sourcing.{SourceEntry, SourceWithHealthEntry}
import net.psforever.objects.vital.{DamagingActivity, RepairFromEquipment, SpawningActivity}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
/**
* The "control" `Actor` mixin for repair-handling code

View file

@ -9,7 +9,7 @@ import net.psforever.objects.{Player, Tool}
import net.psforever.packet.game.{ChatMsg, InventoryStateMessage, RepairMessage}
import net.psforever.types.{ChatMessageType, PlanetSideEmpire, Vector3}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{PlanetsideAttribute, SendResponse}
/**
* The "control" `Actor` mixin for repair-handling code,

View file

@ -12,7 +12,7 @@ import net.psforever.objects.{GlobalDefinitions, Ntu, NtuContainer, NtuStorageBe
import net.psforever.types.{ExperienceType, PlanetSideEmpire}
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.util.Config

View file

@ -9,7 +9,7 @@ import net.psforever.objects.serverobject.doors.Door
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.ChatMsg
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.base.support.SupportActor
import net.psforever.services.local.{DoorMessage, LocalAction}
import net.psforever.services.hart.{HartTimer, HartTimerActions}

View file

@ -4,7 +4,7 @@ package net.psforever.objects.serverobject.structures.participation
import net.psforever.objects.Player
import net.psforever.objects.avatar.scoring.Kill
import net.psforever.objects.sourcing.UniquePlayer
import net.psforever.services.base.messages.GenericObjectAction
import net.psforever.services.base.message.GenericObjectAction
import net.psforever.types.{PlanetSideEmpire, Vector3}
import scala.collection.mutable

View file

@ -15,7 +15,7 @@ import net.psforever.objects.avatar.scoring.Kill
import net.psforever.objects.serverobject.hackable.Hackable
import net.psforever.objects.zones.exp.ToDatabase
import net.psforever.packet.game.ChatMsg
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.LocalServiceMessage
import scala.collection.mutable

View file

@ -6,7 +6,7 @@ import net.psforever.objects.serverobject.damage.Damageable
import net.psforever.objects.sourcing.AmenitySource
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.packet.game.HackState1
import net.psforever.services.base.messages.{PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{PlanetsideAttribute, SendResponse}
import net.psforever.services.local.HackClearMessage
import net.psforever.services.local.support.HackClearActor
import org.log4s.Logger

View file

@ -16,7 +16,7 @@ import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.objects.zones.Zone
import net.psforever.objects.{GlobalDefinitions, Player, SimpleItem}
import net.psforever.packet.game.HackState1
import net.psforever.services.base.messages.SetEmpire
import net.psforever.services.base.message.SetEmpire
import net.psforever.services.local.LocalServiceMessage
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID}

View file

@ -13,7 +13,7 @@ import net.psforever.objects.serverobject.turret.auto.AutomatedTurret.Target
import net.psforever.objects.serverobject.turret.auto.{AffectedByAutomaticTurretFire, AutomatedTurret, AutomatedTurretBehavior}
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.packet.game.{ChangeFireModeMessage, HackState1}
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.support.TurretUpgrader
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.{BailType, PlanetSideEmpire, PlanetSideGUID}

View file

@ -9,7 +9,7 @@ import net.psforever.objects.serverobject.damage.{Damageable, DamageableWeaponTu
import net.psforever.objects.serverobject.repair.RepairableWeaponTurret
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
trait TurretControl
extends Actor

View file

@ -6,7 +6,7 @@ import net.psforever.objects.ce.Deployable
import net.psforever.objects.{Player, Tool, TurretDeployable}
import net.psforever.packet.game.{HackMessage, HackState, HackState1, HackState7, InventoryStateMessage}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.{SendResponse, SetEmpire}
import net.psforever.services.base.message.{SendResponse, SetEmpire}
import net.psforever.services.local.{LocalAction, LocalServiceMessage}
import net.psforever.services.vehicle.support.TurretUpgrader
import net.psforever.services.vehicle.{TurretMessage, VehicleAction, VehicleServiceMessage}

View file

@ -18,7 +18,7 @@ import net.psforever.objects.zones.interaction.InteractsWithZone
import net.psforever.objects.{Default, PlanetSideGameObject, Player}
import net.psforever.packet.game.{ChangeFireStateMessage_Start, ChangeFireStateMessage_Stop, ObjectDetectedMessage}
import net.psforever.services.Service
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.LocalServiceMessage
import net.psforever.types.{PlanetSideGUID, Vector3}

View file

@ -8,12 +8,12 @@ import net.psforever.objects.serverobject.deploy.Deployment
import net.psforever.objects.serverobject.resourcesilo.ResourceSilo
import net.psforever.objects.serverobject.structures.WarpGate
import net.psforever.objects.serverobject.transfer.{TransferBehavior, TransferContainer}
import net.psforever.objects.{NtuContainer, _}
import net.psforever.objects._
import net.psforever.types.DriveState
import net.psforever.services.vehicle.VehicleServiceMessage
import akka.actor.typed.scaladsl.adapter._
import net.psforever.objects.serverobject.transfer.TransferContainer.TransferMaterial
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.duration._

View file

@ -11,7 +11,7 @@ import net.psforever.packet.game.{CargoMountPointStatusMessage, ObjectAttachMess
import net.psforever.types.{BailType, CargoStatus, PlanetSideGUID, Vector3}
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.Service
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import scala.concurrent.duration._

View file

@ -2,7 +2,7 @@
package net.psforever.objects.vehicles.control
import net.psforever.objects._
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import net.psforever.types.DriveState

View file

@ -11,7 +11,7 @@ import net.psforever.objects.vital.prop.DamageWithPosition
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.{TriggerEffectMessage, TriggeredEffectLocation}
import net.psforever.services.Service
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types.PlanetSideGUID

View file

@ -17,7 +17,7 @@ import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.objects.zones.Zone
import net.psforever.packet.game._
import net.psforever.services.Service
import net.psforever.services.base.messages.{GenericObjectAction, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{GenericObjectAction, PlanetsideAttribute, SendResponse}
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types._

View file

@ -3,7 +3,7 @@ package net.psforever.objects.vehicles.control
import akka.actor.{Actor, Cancellable}
import net.psforever.objects._
import net.psforever.services.base.messages.PlanetsideAttribute
import net.psforever.services.base.message.PlanetsideAttribute
import net.psforever.services.vehicle.VehicleServiceMessage
import scala.concurrent.ExecutionContext.Implicits.global

View file

@ -37,7 +37,7 @@ import net.psforever.packet.game._
import net.psforever.packet.game.objectcreate.ObjectCreateMessageParent
import net.psforever.types._
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.{ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.base.message.{ObjectDelete, PlanetsideAttribute, SendResponse}
import net.psforever.services.vehicle.{VehicleAction, VehicleServiceMessage}
import scala.annotation.unused

View file

@ -6,7 +6,7 @@ import net.psforever.objects.avatar.interaction.WithEntrance
import net.psforever.objects.serverobject.doors.InteriorDoorPassage
import net.psforever.objects.serverobject.environment.PieceOfEnvironment
import net.psforever.objects.zones.interaction.InteractsWithZone
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
class WithEntranceInVehicle
extends WithEntrance() {

View file

@ -4,9 +4,8 @@ import enumeratum.values.{StringEnum, StringEnumEntry}
import net.psforever.objects.{PlanetSideGameObject, Player, Vehicle}
import net.psforever.objects.serverobject.environment._
import net.psforever.packet.game.{ChatMsg, OffshoreVehicleMessage}
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types.{ChatMessageType, PlanetSideEmpire, PlanetSideGUID, Vector3}
@ -690,10 +689,7 @@ object MapEnvironment {
val warning = s"Do not travel any further $trespass of the battlefield or you$punishment"
p.Zone.AvatarEvents ! AvatarServiceMessage(
p.Name,
AvatarAction.SendResponseTargeted(
Service.defaultPlayerGUID,
ChatMsg(ChatMessageType.CMT_QUIT, warning)
)
SendResponse(ChatMsg(ChatMessageType.CMT_QUIT, warning))
)
case _ => ;
}

View file

@ -1616,7 +1616,7 @@ object Zone {
zone.avatarEvents = context.actorOf(Props(classOf[AvatarService], zone), s"$id-avatar-events")
zone.localEvents = context.actorOf(Props(classOf[LocalService], zone), s"$id-local-events")
zone.vehicleEvents = context.actorOf(Props(classOf[VehicleService], zone), s"$id-vehicle-events")
zone.vehicleEvents = context.actorOf(Props(classOf[VehicleService]), s"$id-vehicle-events")
zone.timeOfDayOrigin = System.currentTimeMillis()

View file

@ -10,7 +10,7 @@ import net.psforever.objects.sourcing.ObjectSource
import net.psforever.objects.vehicles.MountedWeapons
import net.psforever.objects.vital.SpawningActivity
import net.psforever.packet.game.ChatMsg
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.local.LocalServiceMessage
import net.psforever.types.ChatMessageType

View file

@ -6,7 +6,7 @@ import net.psforever.objects.ballistics.Projectile
import net.psforever.objects.guid.{GUIDTask, StraightforwardTask, TaskBundle, TaskWorkflow}
import net.psforever.services.Service
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import net.psforever.types.PlanetSideGUID
import scala.collection.mutable

View file

@ -9,7 +9,7 @@ import net.psforever.objects.serverobject.structures.WarpGate
import net.psforever.objects.vital.InGameHistory
import net.psforever.objects.{Default, GlobalDefinitions, Vehicle}
import net.psforever.packet.game.ChatMsg
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.vehicle.VehicleServiceMessage
import net.psforever.types.{ChatMessageType, DriveState, PlanetSideEmpire, Vector3}

View file

@ -12,7 +12,7 @@ import net.psforever.objects.Default
import net.psforever.objects.serverobject.structures.{Building, WarpGate}
import net.psforever.objects.zones.Zone
import net.psforever.packet.game.ChatMsg
import net.psforever.services.base.messages.SendResponse
import net.psforever.services.base.message.SendResponse
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceMessage, GalaxyServiceResponse}
import net.psforever.types.ChatMessageType
import net.psforever.util.Config

View file

@ -16,7 +16,7 @@ import net.psforever.persistence
import net.psforever.types.Vector3
import net.psforever.services.{Service, ServiceManager}
import net.psforever.services.avatar.{AvatarAction, AvatarServiceMessage}
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import net.psforever.services.galaxy.{GalaxyAction, GalaxyServiceMessage}
import net.psforever.zones.Zones

View file

@ -10,11 +10,9 @@ import net.psforever.objects.serverobject.environment.interaction.common.Watery.
import net.psforever.objects.sourcing.{SourceEntry, UniquePlayer}
import net.psforever.objects.vital.interaction.DamageResult
import net.psforever.objects.zones.Zone
import net.psforever.packet.PlanetSideGamePacket
import net.psforever.packet.game.{ImplantAction, ObjectCreateMessage}
import net.psforever.packet.game.objectcreate.{ConstructorData, DroppedItemData, ObjectCreateMessageParent, PlacementData}
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.{EventMessage, EventResponse, SelfRespondingEvent}
import net.psforever.services.base.message.{EventMessage, EventResponse, ObjectDelete, SelfRespondingEvent}
import net.psforever.types.{ExoSuitType, ExperienceType, PlanetSideGUID, TransactionType, Vector3}
import scala.concurrent.duration.FiniteDuration
@ -26,8 +24,6 @@ object AvatarAction {
final case class ChangeFireMode(item_guid: PlanetSideGUID, mode: Int) extends SelfRespondingEvent
final case class ConcealPlayer(player_guid: PlanetSideGUID) extends SelfRespondingEvent
final case class EnvironmentalDamage(player_guid: PlanetSideGUID, source_guid: PlanetSideGUID, amount: Int) extends SelfRespondingEvent
final case class DeactivateImplantSlot(player_guid: PlanetSideGUID, slot: Int) extends SelfRespondingEvent
@ -153,8 +149,6 @@ object AvatarAction {
final case class StowEquipment(target_guid: PlanetSideGUID, slot: Int, item: Equipment)
extends SelfRespondingEvent
final case class SendResponseTargeted(target_guid: PlanetSideGUID, msg: PlanetSideGamePacket) extends SelfRespondingEvent
final case class TerminalOrderResult(terminal_guid: PlanetSideGUID, action: TransactionType.Value, result: Boolean)
extends SelfRespondingEvent

View file

@ -2,9 +2,8 @@
package net.psforever.services.avatar
import akka.actor.{ActorContext, ActorRef, Props}
import net.psforever.objects.zones.Zone
import net.psforever.services.avatar.support.{CorpseRemovalActor, DroppedItemRemover}
import net.psforever.services.base.{EventServiceSupport, GenericEventServiceWithCacheAndSupport, GenericMessageEnvelope}
import net.psforever.services.base.{EventServiceSupport, EventSystemStamp, GenericEventServiceWithCacheAndSupport}
case object CorpseRemovalSupport
extends EventServiceSupport {
@ -22,12 +21,10 @@ case object LitterRemovalSupport
}
}
class AvatarService(zone: Zone)
extends GenericEventServiceWithCacheAndSupport[AvatarServiceResponse](
busName = "Avatar",
case object AvatarStamp extends EventSystemStamp
class AvatarService
extends GenericEventServiceWithCacheAndSupport(
stamp = AvatarStamp,
eventSupportServices = List(CorpseRemovalSupport, LitterRemovalSupport)
) {
protected def composeResponseEnvelope(msg: GenericMessageEnvelope): AvatarServiceResponse = {
AvatarServiceResponse(formatChannelOnBusName(msg.channel), msg.filter, msg.msg.response())
}
}
)

View file

@ -4,7 +4,9 @@ package net.psforever.services.avatar
import net.psforever.objects.zones.Zone
import net.psforever.services.{RemoverActor, Service}
import net.psforever.services.avatar.AvatarAction.{DropItem, PickupItem, Release}
import net.psforever.services.base.{EventMessage, GenericMessageToSupportEnvelope, GenericMessageToSupportEnvelopeOnly, MessageEnvelope}
import net.psforever.services.base.envelope.MessageEnvelope
import net.psforever.services.base.message.EventMessage
import net.psforever.services.base.{GenericSupportEnvelope, GenericSupportEnvelopeOnly}
import net.psforever.types.PlanetSideGUID
object AvatarServiceMessage {
@ -16,11 +18,11 @@ object AvatarServiceMessage {
}
final case class ReleaseMessage(
channel: String,
originalChannel: String,
filter: PlanetSideGUID,
msg: Release
)
extends GenericMessageToSupportEnvelope {
extends GenericSupportEnvelope {
def supportLabel: String = "undertaker"
def supportMessage: Any = {
val Release(player, zone, time) = msg
@ -34,12 +36,12 @@ object ReleaseMessage {
}
final case class PickupItemMessage(
channel: String,
originalChannel: String,
filter: PlanetSideGUID,
msg: PickupItem,
zone: Zone
)
extends GenericMessageToSupportEnvelope {
extends GenericSupportEnvelope {
def supportLabel: String = "janitor"
def supportMessage: Any = {
val PickupItem(item, _) = msg
@ -53,12 +55,12 @@ object PickupItemMessage {
}
final case class DropItemMessage(
channel: String,
originalChannel: String,
filter: PlanetSideGUID,
msg: DropItem,
zone: Zone
)
extends GenericMessageToSupportEnvelope {
extends GenericSupportEnvelope {
def supportLabel: String = "janitor"
def supportMessage: Any = {
val DropItem(item) = msg
@ -72,11 +74,11 @@ object DropItemMessage {
}
final case class CorpseEnvelope(supportMessage: Any)
extends GenericMessageToSupportEnvelopeOnly {
extends GenericSupportEnvelopeOnly {
def supportLabel: String = "undertaker"
}
final case class GroundEnvelope(supportMessage: Any)
extends GenericMessageToSupportEnvelopeOnly {
extends GenericSupportEnvelopeOnly {
def supportLabel: String = "janitor"
}

View file

@ -1,11 +1,15 @@
// Copyright (c) 2017 PSForever
package net.psforever.services.avatar
import net.psforever.services.base.message.EventResponse
import net.psforever.types.PlanetSideGUID
import net.psforever.services.base.{EventResponse, GenericResponseEnvelope}
import net.psforever.services.base.EventSystemStamp
import net.psforever.services.base.envelope.GenericResponseEnvelope
final case class AvatarServiceResponse(
channel: String,
filter: PlanetSideGUID,
reply: EventResponse
) extends GenericResponseEnvelope
) extends GenericResponseEnvelope {
def stamp: EventSystemStamp = AvatarStamp
}

View file

@ -6,7 +6,7 @@ import net.psforever.objects.Player
import net.psforever.types.ExoSuitType
import net.psforever.services.RemoverActor
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import scala.concurrent.duration._

View file

@ -5,7 +5,7 @@ import net.psforever.objects.equipment.Equipment
import net.psforever.objects.guid.{GUIDTask, TaskBundle}
import net.psforever.services.RemoverActor
import net.psforever.services.avatar.AvatarServiceMessage
import net.psforever.services.base.messages.ObjectDelete
import net.psforever.services.base.message.ObjectDelete
import scala.concurrent.duration._

View file

@ -3,32 +3,23 @@ package net.psforever.services.base
import akka.actor.Actor
import net.psforever.services.Service
import net.psforever.services.base.bus.{AllGenericBusMsg, GenericEventBus, GenericEventBusResponse}
import net.psforever.services.base.bus.GenericEventBus
import net.psforever.services.base.envelope.{GenericMessageEnvelope, GenericResponseEnvelope}
import org.log4s.Logger
import scala.annotation.unused
trait GenericResponseEnvelope
extends GenericEventBusResponse {
def reply: EventResponse
}
trait EventSystemStamp
trait GenericMessageEnvelope
extends AllGenericBusMsg {
def msg: EventMessage
}
abstract class GenericEventService[OUT <: GenericResponseEnvelope](busName: String)
abstract class GenericEventService(stamp: EventSystemStamp)
extends Actor {
protected lazy val log: Logger = org.log4s.getLogger(getClass.getSimpleName)
protected val eventBus: GenericEventBus[OUT] = new GenericEventBus[OUT]
def BusName: String = busName
protected val eventBus: GenericEventBus = new GenericEventBus
private def commonJoinBehavior: Receive = {
case Service.Join(channel) =>
val path = formatChannelOnBusName(channel)
val path = formatChannel(channel)
val who = sender()
eventBus.subscribe(who, path)
}
@ -38,7 +29,7 @@ abstract class GenericEventService[OUT <: GenericResponseEnvelope](busName: Stri
eventBus.unsubscribe(sender())
case Service.Leave(Some(channel)) =>
val path = formatChannelOnBusName(channel)
val path = formatChannel(channel)
eventBus.unsubscribe(sender(), path)
case Service.LeaveAll() =>
@ -62,7 +53,9 @@ abstract class GenericEventService[OUT <: GenericResponseEnvelope](busName: Stri
eventBus.publish(composeResponseEnvelope(msg))
}
protected def composeResponseEnvelope(@unused msg: GenericMessageEnvelope): OUT
protected def composeResponseEnvelope(@unused msg: GenericMessageEnvelope): GenericResponseEnvelope = {
msg.response(stamp, formatChannel)
}
protected def formatChannelOnBusName(channel: String): String = s"/$channel/$busName"
protected def formatChannel(channel: String): String = s"/$channel"
}

View file

@ -2,24 +2,31 @@
package net.psforever.services.base
import net.psforever.services.Service
import net.psforever.services.base.envelope.{GenericMessageEnvelope, MessageEnvelope, MessageTransformationBehavior}
import net.psforever.services.base.message.EventMessage
import net.psforever.types.PlanetSideGUID
import scala.collection.concurrent.{Map => CMap}
import scala.jdk.CollectionConverters._
import java.util.concurrent.ConcurrentHashMap
import scala.concurrent.ExecutionContext.Implicits.global
/*
Adapted from the rating limiting code in https://github.com/Pinapse/giant with permission
*/
trait CachedGenericEventMessageEnvelope
extends GenericMessageEnvelope {
extends MessageTransformationBehavior {
def guid: PlanetSideGUID
}
final case class CachedMessage(guid: PlanetSideGUID, channel: String, filter: PlanetSideGUID, msg: EventMessage)
extends CachedGenericEventMessageEnvelope
final case class CachedMessage(
guid: PlanetSideGUID,
originalChannel: String,
override val filter: PlanetSideGUID,
override val msg: EventMessage
) extends CachedGenericEventMessageEnvelope {
assert(guid != Service.defaultPlayerGUID, "can not cache message under default GUID")
}
object CachedMessage {
def apply(channel: String, filter: PlanetSideGUID, msg: EventMessage): GenericMessageEnvelope = {
@ -31,31 +38,13 @@ object CachedMessage {
}
}
object CachedGenericEventMessageEnvelope {
def apply(channel: String, filter: PlanetSideGUID, msg: EventMessage): GenericMessageEnvelope = {
if (filter == Service.defaultPlayerGUID) {
MessageEnvelope(channel, filter, msg)
} else {
CachedMessage(filter, channel, filter, msg)
}
}
def apply(guid: PlanetSideGUID, channel: String, filter: PlanetSideGUID, msg: EventMessage): GenericMessageEnvelope = {
if (guid == Service.defaultPlayerGUID) {
MessageEnvelope(channel, filter, msg)
} else {
CachedMessage(guid, channel, filter, msg)
}
}
}
private case object FlushCachedMessages
abstract class GenericEventServiceWithCacheAndSupport[OUT <: GenericResponseEnvelope]
abstract class GenericEventServiceWithCacheAndSupport
(
busName: String,
stamp: EventSystemStamp,
eventSupportServices: List[EventServiceSupport]
) extends GenericEventServiceWithSupport[OUT](busName, eventSupportServices) {
) extends GenericEventServiceWithSupport(stamp, eventSupportServices) {
private val flushCacheWait: Long = 50 //milliseconds
private var hasCachedMessages: Boolean = false
private var nextTimeToFlushCache: Long = 0L

View file

@ -3,40 +3,58 @@ package net.psforever.services.base
import akka.actor.{ActorContext, ActorRef}
import net.psforever.services.Service
import net.psforever.services.base.envelope.{GenericMessageEnvelope, GenericResponseEnvelope, MessageTransformationBehavior, NoReply, Undelivered}
import net.psforever.services.base.message.{EventMessage, EventResponse, SelfRespondingEvent}
import net.psforever.types.PlanetSideGUID
import scala.annotation.unused
case object NoMessage extends SelfRespondingEvent
case object NoResponseEnvelope extends GenericResponseEnvelope {
def reply: EventResponse = NoReply
def stamp: EventSystemStamp = Undelivered
def channel: String = ""
def filter: PlanetSideGUID = Service.defaultPlayerGUID
}
trait EventServiceSupport {
def label: String
def constructor(@unused context: ActorContext): ActorRef
}
trait GenericMessageToSupportEnvelope
extends GenericMessageEnvelope {
sealed trait GenericMessageToSupport {
def supportLabel: String
def supportMessage: Any
}
trait GenericMessageToSupportEnvelopeOnly
extends GenericMessageToSupportEnvelope {
trait GenericSupportEnvelope
extends GenericMessageToSupport
with MessageTransformationBehavior
trait GenericSupportEnvelopeOnly
extends GenericMessageToSupport
with GenericMessageEnvelope {
def originalChannel: String = ""
def channel: String = ""
def filter: PlanetSideGUID = Service.defaultPlayerGUID
def msg: EventMessage = null
def msg: EventMessage = NoMessage
def response(@unused stamp: EventSystemStamp, @unused sendToChannel: String => String): GenericResponseEnvelope = NoResponseEnvelope
}
abstract class GenericEventServiceWithSupport[OUT <: GenericResponseEnvelope]
abstract class GenericEventServiceWithSupport
(
busName: String,
stamp: EventSystemStamp,
eventSupportServices: List[EventServiceSupport]
) extends GenericEventService[OUT](busName) {
) extends GenericEventService(stamp) {
private val supportServices: Map[String, ActorRef] =
eventSupportServices
.map { supportService => (supportService.label, supportService.constructor(context)) }
.toMap[String, ActorRef]
private def forwardToSupport(msg: GenericMessageToSupportEnvelope): Unit = {
private def forwardToSupport(msg: GenericMessageToSupport): Unit = {
supportServices
.get(msg.supportLabel)
.map { support =>
@ -50,12 +68,12 @@ abstract class GenericEventServiceWithSupport[OUT <: GenericResponseEnvelope]
override protected def handleMessage(event: GenericMessageEnvelope): Unit = {
event match {
case msg: GenericMessageToSupportEnvelopeOnly =>
case msg: GenericSupportEnvelopeOnly =>
forwardToSupport(msg)
case msg: GenericMessageToSupportEnvelope =>
case msg: GenericSupportEnvelope =>
forwardToSupport(msg)
eventBus.publish(composeResponseEnvelope(event))
case _ =>
case event =>
eventBus.publish(composeResponseEnvelope(event))
}
}

View file

@ -1,7 +0,0 @@
// Copyright (c) 2026 PSForever
package net.psforever.services.base
import net.psforever.types.PlanetSideGUID
case class MessageEnvelope(channel: String, filter: PlanetSideGUID, msg: EventMessage)
extends GenericMessageEnvelope

View file

@ -3,19 +3,11 @@ package net.psforever.services.base.bus
import akka.event.{ActorEventBus, SubchannelClassification}
import akka.util.Subclassification
import net.psforever.types.PlanetSideGUID
import net.psforever.services.base.envelope.GenericResponseEnvelope
trait AllGenericBusMsg {
def channel: String
def filter: PlanetSideGUID
}
trait GenericEventBusResponse
extends AllGenericBusMsg
class GenericEventBus[A <: GenericEventBusResponse]
class GenericEventBus
extends ActorEventBus with SubchannelClassification {
type Event = A
type Event = GenericResponseEnvelope
type Classifier = String
protected def classify(event: Event): Classifier = event.channel

View file

@ -1,105 +0,0 @@
// Copyright (c) 2026 PSForever
package net.psforever.services.base.bus
import net.psforever.types.PlanetSideGUID
import java.util.concurrent.ConcurrentHashMap
import scala.annotation.unused
import scala.collection.concurrent.{Map => CMap}
import scala.jdk.CollectionConverters._
/*
Adapted from the rating limiting code in https://github.com/Pinapse/giant with permission
*/
trait GenericGuidEventBusResponse
extends GenericEventBusResponse {
def guid: PlanetSideGUID
def inner: Any
}
class RateLimitScheduler[A <: GenericGuidEventBusResponse](eventBus: GenericEventBus[A], interval: Long) extends Thread {
private var hasWork: Boolean = false
private var working: Boolean = false
private var timeOfLastFlush: Long = 0L
private val buffer: CMap[String, CMap[String, CMap[PlanetSideGUID, A]]] =
new ConcurrentHashMap[String, CMap[String, CMap[PlanetSideGUID, A]]]().asScala
override def run(): Unit = {
while (working) {
//originally, there was a Thread.sleep(interval) here, replaced by timeOfLastFlush logic
flushBuffer()
}
}
def push(event: A): Unit = {
val eventClassName = event.inner.getClass.getName
val cache =
buffer
.getOrElseUpdate(event.channel, new ConcurrentHashMap[String, CMap[PlanetSideGUID, A]]().asScala)
.getOrElseUpdate(eventClassName, new ConcurrentHashMap[PlanetSideGUID, A]().asScala)
cache.updateWith(event.guid) { _ => Some(event) }
hasWork = true
}
def flushBuffer(): Unit = {
val curr = System.currentTimeMillis()
if (hasWork && timeOfLastFlush + interval <= curr) {
flushBufferNow(curr)
}
}
def flushBufferNow(curr: Long = System.currentTimeMillis()): Unit = {
buffer.foreachEntry { (_, map) =>
map.foreachEntry { (_, map) =>
map.foreachEntry { (_, event) =>
eventBus.truePublish(event)
}
map.clear()
}
}
hasWork = false
timeOfLastFlush = curr
}
override def start(): Unit = {
working = true
timeOfLastFlush = System.currentTimeMillis()
super.start()
}
def isRunning: Boolean = {
working
}
def stopRunning(): Unit = {
working = false
flushBufferNow()
}
}
abstract class GenericGuidEventBus[A <: GenericGuidEventBusResponse](rateLimit: Double)
extends GenericEventBus[A] {
private val rateLimitedDispatch = new RateLimitScheduler[A](
eventBus = this,
scala.math.floor(1000.0 / rateLimit).toInt
)
rateLimitedDispatch.start()
override def publish(event: Event): Unit = {
if (rateLimit > 0 && shouldRateLimit(event) && rateLimitedDispatch.isRunning) {
rateLimitedDispatch.push(event)
} else {
truePublish(event)
}
}
def shouldRateLimit(@unused event: Event): Boolean
// override protected def publish(event: Event, subscriber: Subscriber): Unit = {
// val trimmedEventClassName =
// event.inner.getClass().getName().stripPrefix(event.inner.getClass.getPackageName() + ".").stripSuffix("$")
// GenericGuidEventBus.genericGuidEventBusPublish.labels(event.channel, trimmedEventClassName).inc()
// subscriber ! event
// }
}

View file

@ -0,0 +1,9 @@
// Copyright (c) 2026 PSForever
package net.psforever.services.base.envelope
import net.psforever.types.PlanetSideGUID
trait AllEnvelopes {
def channel: String
def filter: PlanetSideGUID
}

View file

@ -0,0 +1,19 @@
// Copyright (c) 2026 PSForever
package net.psforever.services.base.envelope
import net.psforever.services.base.EventSystemStamp
import net.psforever.services.base.message.EventMessage
import net.psforever.types.PlanetSideGUID
trait GenericMessageEnvelope
extends AllEnvelopes {
def originalChannel: String
def msg: EventMessage
def response(stamp: EventSystemStamp, sendToChannel: String => String): GenericResponseEnvelope
}
object GenericMessageEnvelope {
def unapply(obj: GenericMessageEnvelope): Option[(String, PlanetSideGUID, EventMessage)] = {
Some((obj.originalChannel, obj.filter, obj.msg))
}
}

Some files were not shown because too many files have changed in this diff Show more