From ae68231fda4ef5816bf4808feac5343e0cca0758 Mon Sep 17 00:00:00 2001 From: SouNourS Date: Tue, 11 Apr 2017 11:36:13 +0200 Subject: [PATCH] ReleaseAvatarRequestMessage --- .../psforever/packet/GamePacketOpcode.scala | 2 +- .../net/psforever/packet/PacketCoding.scala | 2 +- .../game/ReleaseAvatarRequestMessage.scala | 21 +++++++++++++++ .../ReleaseAvatarRequestMessageTest.scala | 27 +++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala create mode 100644 common/src/test/scala/game/ReleaseAvatarRequestMessageTest.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index 0ed57903..f4c57706 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -522,7 +522,7 @@ object GamePacketOpcode extends Enumeration { case 0xa9 => game.AvatarGrenadeStateMessage.decode case 0xaa => noDecoder(UnknownMessage170) case 0xab => noDecoder(UnknownMessage171) - case 0xac => noDecoder(ReleaseAvatarRequestMessage) + case 0xac => game.ReleaseAvatarRequestMessage.decode case 0xad => noDecoder(AvatarDeadStateMessage) case 0xae => noDecoder(CSAssistMessage) case 0xaf => noDecoder(CSAssistCommentMessage) diff --git a/common/src/main/scala/net/psforever/packet/PacketCoding.scala b/common/src/main/scala/net/psforever/packet/PacketCoding.scala index fa99fff3..3a12b561 100644 --- a/common/src/main/scala/net/psforever/packet/PacketCoding.scala +++ b/common/src/main/scala/net/psforever/packet/PacketCoding.scala @@ -31,7 +31,7 @@ final case class ControlPacket(opcode : ControlPacketOpcode.Value, object PacketCoding { /// A lower bound on the packet size - final val PLANETSIDE_MIN_PACKET_SIZE = 2 + final val PLANETSIDE_MIN_PACKET_SIZE = 1 /** * Given a full and complete planetside packet as it would be sent on the wire, attempt to diff --git a/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala b/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala new file mode 100644 index 00000000..f25673ed --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/ReleaseAvatarRequestMessage.scala @@ -0,0 +1,21 @@ +// Copyright (c) 2017 PSForever +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import scodec.Codec + + +/** Packet send by client when clic on button after death + * https://streamable.com/4r16m + */ + +final case class ReleaseAvatarRequestMessage() + extends PlanetSideGamePacket { + type Packet = ReleaseAvatarRequestMessage + def opcode = GamePacketOpcode.ReleaseAvatarRequestMessage + def encode = ReleaseAvatarRequestMessage.encode(this) +} + +object ReleaseAvatarRequestMessage extends Marshallable[ReleaseAvatarRequestMessage] { + implicit val codec : Codec[ReleaseAvatarRequestMessage] = PacketHelpers.emptyCodec(ReleaseAvatarRequestMessage()) +} diff --git a/common/src/test/scala/game/ReleaseAvatarRequestMessageTest.scala b/common/src/test/scala/game/ReleaseAvatarRequestMessageTest.scala new file mode 100644 index 00000000..05666382 --- /dev/null +++ b/common/src/test/scala/game/ReleaseAvatarRequestMessageTest.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.HexStringSyntax + +class ReleaseAvatarRequestMessageTest extends Specification { + val string = hex"ac" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case ReleaseAvatarRequestMessage() => + ok + case _ => + ko + } + } + + "encode" in { + val msg = ReleaseAvatarRequestMessage() + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } +}