From b0acc44373d50b318b3cf7531b1aa68b1e60b755 Mon Sep 17 00:00:00 2001 From: tfarley Date: Sat, 13 Aug 2016 19:45:55 -0700 Subject: [PATCH 1/2] Add WeaponJammedMessage packet --- .../psforever/packet/GamePacketOpcode.scala | 2 +- .../packet/game/WeaponJammedMessage.scala | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index f984eb78..50638cb2 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -441,7 +441,7 @@ object GamePacketOpcode extends Enumeration { // OPCODE 100 case AvatarSearchCriteriaMessage => noDecoder(opcode) case AvatarSearchResponse => noDecoder(opcode) - case WeaponJammedMessage => noDecoder(opcode) + case WeaponJammedMessage => game.WeaponJammedMessage.decode case LinkDeadAwarenessMsg => noDecoder(opcode) case DroppodFreefallingMessage => noDecoder(opcode) case AvatarFirstTimeEventMessage => game.AvatarFirstTimeEventMessage.decode diff --git a/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala b/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala new file mode 100644 index 00000000..de772346 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/WeaponJammedMessage.scala @@ -0,0 +1,27 @@ +// Copyright (c) 2016 PSForever.net to present +package net.psforever.packet.game + +import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket} +import scodec.Codec +import scodec.codecs._ + +/** + * Instructs client to play the weapon jammed sound when sent server to client. + * + * Appears to have the same functionality and sound regardless of guid, as long as the client has that item in inventory. + * See also [[WeaponDryFireMessage]] + * + * @param weapon_guid the weapon that is jammed + */ +final case class WeaponJammedMessage(weapon_guid : PlanetSideGUID) + extends PlanetSideGamePacket { + type Packet = WeaponJammedMessage + def opcode = GamePacketOpcode.WeaponJammedMessage + def encode = WeaponJammedMessage.encode(this) +} + +object WeaponJammedMessage extends Marshallable[WeaponJammedMessage] { + implicit val codec : Codec[WeaponJammedMessage] = ( + ("weapon_guid" | PlanetSideGUID.codec) + ).as[WeaponJammedMessage] +} From 0212272a2a6d2caa4506bca68e4425edee2f2cb8 Mon Sep 17 00:00:00 2001 From: tfarley Date: Sat, 13 Aug 2016 19:48:30 -0700 Subject: [PATCH 2/2] Add WeaponJammedMessage test --- common/src/test/scala/GamePacketTest.scala | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala index 3f351b20..1d3c7733 100644 --- a/common/src/test/scala/GamePacketTest.scala +++ b/common/src/test/scala/GamePacketTest.scala @@ -776,6 +776,26 @@ class GamePacketTest extends Specification { } } + "WeaponJammedMessage" should { + val string = hex"66 4C00" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case WeaponJammedMessage(weapon_guid) => + weapon_guid mustEqual PlanetSideGUID(76) + case default => + ko + } + } + + "encode" in { + val msg = WeaponJammedMessage(PlanetSideGUID(76)) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } + } + "PingMsg" should { val packet = hex"1a 00000000 b0360000"