diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index e6af1697..8d8d3e5c 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 00000000..7279142a --- /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 00000000..eaacc6f6 --- /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 7e87ab8b..153053b4 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)