From 063d4967bc9acf5ee936121dd950e2c7bb0def8b Mon Sep 17 00:00:00 2001 From: SouNourS Date: Wed, 4 Oct 2017 17:15:57 +0200 Subject: [PATCH] ActionProgressMessage --- .../psforever/packet/GamePacketOpcode.scala | 2 +- .../packet/game/ActionProgressMessage.scala | 24 +++++++++++++++ .../game/ActionProgressMessageTest.scala | 29 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala create mode 100644 common/src/test/scala/game/ActionProgressMessageTest.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index c8a3ffc8..5b68b55c 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -358,7 +358,7 @@ object GamePacketOpcode extends Enumeration { // OPCODES 0x20-2f case 0x20 => noDecoder(UnknownMessage32) - case 0x21 => noDecoder(ActionProgressMessage) + case 0x21 => game.ActionProgressMessage.decode case 0x22 => noDecoder(ActionCancelMessage) case 0x23 => noDecoder(ActionCancelAcknowledgeMessage) case 0x24 => game.SetEmpireMessage.decode diff --git a/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala b/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala new file mode 100644 index 00000000..f9d3f6d9 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/ActionProgressMessage.scala @@ -0,0 +1,24 @@ +// Copyright (c) 2017 PSForever +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} +import scodec.Codec +import scodec.codecs._ + +/** + * + */ +final case class ActionProgressMessage(unk1 : Int, + unk2 : Long) + extends PlanetSideGamePacket { + type Packet = ActionProgressMessage + def opcode = GamePacketOpcode.ActionProgressMessage + def encode = ActionProgressMessage.encode(this) +} + +object ActionProgressMessage extends Marshallable[ActionProgressMessage] { + implicit val codec : Codec[ActionProgressMessage] = ( + ("unk1" | uint4L) :: + ("unk2" | uint32L) + ).as[ActionProgressMessage] +} \ No newline at end of file diff --git a/common/src/test/scala/game/ActionProgressMessageTest.scala b/common/src/test/scala/game/ActionProgressMessageTest.scala new file mode 100644 index 00000000..acbf7eb5 --- /dev/null +++ b/common/src/test/scala/game/ActionProgressMessageTest.scala @@ -0,0 +1,29 @@ +// Copyright (c) 2017 PSForever +package game + +import org.specs2.mutable._ +import net.psforever.packet._ +import net.psforever.packet.game._ +import net.psforever.types.ExoSuitType +import scodec.bits._ + +class ActionProgressMessageTest extends Specification { + val string = hex"216000000000" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case ActionProgressMessage(unk1, unk2) => + unk1 mustEqual 6 + unk2 mustEqual 0 + case _ => + ko + } + } + + "encode" in { + val msg = ActionProgressMessage(6, 0L) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } +}