Packet: WeaponJammedMessage

This commit is contained in:
Chord 2016-08-14 16:17:55 -04:00
commit ae250bcf6b
3 changed files with 48 additions and 1 deletions

View file

@ -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

View file

@ -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]
}

View file

@ -796,6 +796,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"