diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index d7bc550b..b0ab76a7 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -425,7 +425,7 @@ object GamePacketOpcode extends Enumeration { // 0x58 case 0x58 => game.AvatarImplantMessage.decode case 0x59 => noDecoder(UnknownMessage89) - case 0x5a => noDecoder(DelayedPathMountMsg) + case 0x5a => game.DelayedPathMountMsg.decode case 0x5b => noDecoder(OrbitalShuttleTimeMsg) case 0x5c => noDecoder(AIDamage) case 0x5d => game.DeployObjectMessage.decode diff --git a/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala b/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala new file mode 100644 index 00000000..4c713e09 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/DelayedPathMountMsg.scala @@ -0,0 +1,32 @@ +// Copyright (c) 2016 PSForever.net to present +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket} +import scodec.Codec +import scodec.codecs._ + +/** + * na + * @param player_guid na + * @param vehicle_guid vehicle ?, turret ? Found a HART GUID for now. Need more search. + * @param u1 na - maybe a delay ? + * @param u2 na + */ +final case class DelayedPathMountMsg(player_guid : PlanetSideGUID, + vehicle_guid : PlanetSideGUID, + u1 : Int, + u2 : Boolean) + extends PlanetSideGamePacket { + type Packet = DelayedPathMountMsg + def opcode = GamePacketOpcode.DelayedPathMountMsg + def encode = DelayedPathMountMsg.encode(this) +} + +object DelayedPathMountMsg extends Marshallable[DelayedPathMountMsg] { + implicit val codec : Codec[DelayedPathMountMsg] = ( + ("player_guid" | PlanetSideGUID.codec) :: + ("vehicle_guid" | PlanetSideGUID.codec) :: + ("u1" | uint8L) :: + ("u2" | bool) + ).as[DelayedPathMountMsg] +} diff --git a/common/src/test/scala/game/DelayedPathMountMsgTest.scala b/common/src/test/scala/game/DelayedPathMountMsgTest.scala new file mode 100644 index 00000000..14bc82bb --- /dev/null +++ b/common/src/test/scala/game/DelayedPathMountMsgTest.scala @@ -0,0 +1,30 @@ +// Copyright (c) 2017 PSForever +package game + +import org.specs2.mutable._ +import net.psforever.packet._ +import net.psforever.packet.game._ +import scodec.bits._ + +class DelayedPathMountMsgTest extends Specification { + val string = hex"5a f50583044680" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case DelayedPathMountMsg(player_guid, vehicle_guid,u3,u4) => + player_guid mustEqual PlanetSideGUID(1525) + vehicle_guid mustEqual PlanetSideGUID(1155) + u3 mustEqual 70 + u4 mustEqual true + case _ => + ko + } + } + + "encode" in { + val msg = DelayedPathMountMsg(PlanetSideGUID(1525), PlanetSideGUID(1155),70,true) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } +}