mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-06-25 06:44:19 +00:00
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:
parent
775d9dca5e
commit
4dc5d7f01e
149 changed files with 460 additions and 506 deletions
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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(_, _, _) =>
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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(_, _, _) =>
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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(_, _, _) =>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
//
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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 _ => ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
||||
|
|
|
|||
|
|
@ -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._
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
// }
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
|
@ -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
Loading…
Add table
Add a link
Reference in a new issue