From 9f783572cd38baeeb5600f25d8a35d7309972138 Mon Sep 17 00:00:00 2001 From: FateJH Date: Fri, 21 Apr 2017 00:24:44 -0400 Subject: [PATCH 1/2] initial work on BeginZoningMessage; working tests (not like there's anything to test in the tests) --- .../psforever/packet/GamePacketOpcode.scala | 2 +- .../packet/game/BeginZoningMessage.scala | 19 +++++++++++++ .../scala/game/BeginZoningMessageTest.scala | 27 +++++++++++++++++++ .../src/main/scala/WorldSessionActor.scala | 3 +++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala create mode 100644 common/src/test/scala/game/BeginZoningMessageTest.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index e6af16977..8d8d3e5c3 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -398,7 +398,7 @@ object GamePacketOpcode extends Enumeration { case 0x40 => noDecoder(MountVehicleCargoMsg) case 0x41 => noDecoder(DismountVehicleCargoMsg) case 0x42 => noDecoder(CargoMountPointStatusMessage) - case 0x43 => noDecoder(BeginZoningMessage) + case 0x43 => game.BeginZoningMessage.decode case 0x44 => game.ItemTransactionMessage.decode case 0x45 => game.ItemTransactionResultMessage.decode case 0x46 => game.ChangeFireModeMessage.decode diff --git a/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala new file mode 100644 index 000000000..7279142ae --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala @@ -0,0 +1,19 @@ +// Copyright (c) 2017 PSForever +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import scodec.Codec + +/** + * na + */ +final case class BeginZoningMessage() + extends PlanetSideGamePacket { + type Packet = BeginZoningMessage + def opcode = GamePacketOpcode.BeginZoningMessage + def encode = BeginZoningMessage.encode(this) +} + +object BeginZoningMessage extends Marshallable[BeginZoningMessage] { + implicit val codec : Codec[BeginZoningMessage] = PacketHelpers.emptyCodec(BeginZoningMessage()) +} diff --git a/common/src/test/scala/game/BeginZoningMessageTest.scala b/common/src/test/scala/game/BeginZoningMessageTest.scala new file mode 100644 index 000000000..eaacc6f63 --- /dev/null +++ b/common/src/test/scala/game/BeginZoningMessageTest.scala @@ -0,0 +1,27 @@ +// Copyright (c) 2017 PSForever +package game + +import org.specs2.mutable._ +import net.psforever.packet._ +import net.psforever.packet.game._ +import scodec.bits._ + +class BeginZoningMessageTest extends Specification { + val string = hex"43" //yes, just the opcode + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case BeginZoningMessage() => + ok + case _ => + ko + } + } + + "encode" in { + val msg = BeginZoningMessage() + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } +} diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 7e87ab8b4..153053b46 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -235,6 +235,9 @@ class WorldSessionActor extends Actor with MDCContextAware { case KeepAliveMessage(code) => sendResponse(PacketCoding.CreateGamePacket(0, KeepAliveMessage(0))) + case msg @ BeginZoningMessage() => + log.info("Reticulating splines ...") + case msg @ PlayerStateMessageUpstream(avatar_guid, pos, vel, unk1, aim_pitch, unk2, seq_time, unk3, is_crouching, is_jumping, unk4, is_cloaking, unk5, unk6) => //log.info("PlayerState: " + msg) From 1b296e30b1c44029e34b71e35866365491c5537e Mon Sep 17 00:00:00 2001 From: FateJH Date: Fri, 21 Apr 2017 07:35:30 -0400 Subject: [PATCH 2/2] comments in BeginZoning packet --- .../net/psforever/packet/game/BeginZoningMessage.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala index 7279142ae..bcdf964c8 100644 --- a/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala +++ b/common/src/main/scala/net/psforever/packet/game/BeginZoningMessage.scala @@ -5,7 +5,14 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, Plan import scodec.Codec /** - * na + * Dispatched by the client after the current map has been fully loaded locally and its objects are ready to be initialized.
+ *
+ * When the server receives the packet, for each object on that map, it sends the packets to the client:
+ * - `SetEmpireMessage`
+ * - `HackMessage`
+ * - `PlanetSideAttributeMessage`
+ * - ... and so forth
+ * Afterwards, an avatar POV is declared and the remaining details about the said avatar are assigned. */ final case class BeginZoningMessage() extends PlanetSideGamePacket {