From 29cf96bafbbe299f7c81daa7d970c5e99770533c Mon Sep 17 00:00:00 2001 From: Fate-JH Date: Wed, 27 Jul 2016 01:08:54 -0400 Subject: [PATCH] Packet: AvatarJumpMessage (#41) * added AvatarJumpMessage packet * I was advised to commit these chanegs first --- .../psforever/packet/GamePacketOpcode.scala | 2 +- .../packet/game/AvatarJumpMessage.scala | 20 +++++++++++++++++++ common/src/test/scala/GamePacketTest.scala | 20 +++++++++++++++++++ .../src/main/scala/WorldSessionActor.scala | 3 +++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index 038f9ace..4583bae2 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -382,7 +382,7 @@ object GamePacketOpcode extends Enumeration { case SetCurrentAvatarMessage => game.SetCurrentAvatarMessage.decode case ObjectHeldMessage => game.ObjectHeldMessage.decode case WeaponFireMessage => game.WeaponFireMessage.decode - case AvatarJumpMessage => noDecoder(opcode) + case AvatarJumpMessage => game.AvatarJumpMessage.decode case PickupItemMessage => noDecoder(opcode) case DropItemMessage => game.DropItemMessage.decode case InventoryStateMessage => noDecoder(opcode) diff --git a/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala b/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala new file mode 100644 index 00000000..1cc2d344 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/AvatarJumpMessage.scala @@ -0,0 +1,20 @@ +// 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._ +import scodec.bits._ + +final case class AvatarJumpMessage(state : Boolean) + extends PlanetSideGamePacket { + type Packet = AvatarJumpMessage + def opcode = GamePacketOpcode.AvatarJumpMessage + def encode = AvatarJumpMessage.encode(this) +} + +object AvatarJumpMessage extends Marshallable[AvatarJumpMessage] { + implicit val codec : Codec[AvatarJumpMessage] = ( + ("state" | bool) + ).as[AvatarJumpMessage] +} diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala index 27761f6c..8f61f883 100644 --- a/common/src/test/scala/GamePacketTest.scala +++ b/common/src/test/scala/GamePacketTest.scala @@ -350,6 +350,26 @@ class GamePacketTest extends Specification { } } + "AvatarJumpMessage" should { + val string = hex"35 80" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case AvatarJumpMessage(state) => + state mustEqual true + case default => + ko + } + } + + "encode" in { + val msg = AvatarJumpMessage(true) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } + } + "RequestDestroyMessage" should { val string = hex"2D A49C" diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index 457945a8..9cf776ee 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -178,6 +178,9 @@ class WorldSessionActor extends Actor with MDCContextAware { case msg @ ObjectHeldMessage(avatar_guid, held_holsters, unk1) => log.info("ObjectHeld: " + msg) + case msg @ AvatarJumpMessage(state) => + //log.info("AvatarJump: " + msg) + case msg @ RequestDestroyMessage(object_guid) => log.info("RequestDestroy: " + msg) // TODO: Make sure this is the correct response in all cases