From 4c4f1341bee822e0dcc5137233a9065a9bd6efad Mon Sep 17 00:00:00 2001 From: tfarley Date: Sat, 23 Jul 2016 18:00:43 -0700 Subject: [PATCH] Packet: ChangeFireStateMessage * Add ChangeFireStateMessage packets * Add ChangeFireStateMessage tests * Add ChangeFireStateMessage handler stubs --- .../psforever/packet/GamePacketOpcode.scala | 8 ++-- .../game/ChangeFireStateMessage_Start.scala | 19 +++++++++ .../game/ChangeFireStateMessage_Stop.scala | 19 +++++++++ common/src/test/scala/GamePacketTest.scala | 40 +++++++++++++++++++ .../src/main/scala/WorldSessionActor.scala | 6 +++ 5 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala create mode 100644 common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala diff --git a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala index 2e53c000..e55f6800 100644 --- a/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala +++ b/common/src/main/scala/net/psforever/packet/GamePacketOpcode.scala @@ -87,8 +87,8 @@ object GamePacketOpcode extends Enumeration { PickupItemMessage, DropItemMessage, InventoryStateMessage, - ChangeFireStateMessage_Duplicate, - ChangeFireStateMessage, + ChangeFireStateMessage_Start, + ChangeFireStateMessage_Stop, UnknownMessage59, // OPCODE 60 @@ -386,8 +386,8 @@ object GamePacketOpcode extends Enumeration { case PickupItemMessage => noDecoder(opcode) case DropItemMessage => noDecoder(opcode) case InventoryStateMessage => noDecoder(opcode) - case ChangeFireStateMessage_Duplicate => noDecoder(opcode) - case ChangeFireStateMessage => noDecoder(opcode) + case ChangeFireStateMessage_Start => game.ChangeFireStateMessage_Start.decode + case ChangeFireStateMessage_Stop => game.ChangeFireStateMessage_Stop.decode case UnknownMessage59 => noDecoder(opcode) // OPCODE 60 diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala new file mode 100644 index 00000000..73283738 --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Start.scala @@ -0,0 +1,19 @@ +// 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._ + +final case class ChangeFireStateMessage_Start(item_guid : PlanetSideGUID) + extends PlanetSideGamePacket { + type Packet = ChangeFireStateMessage_Start + def opcode = GamePacketOpcode.ChangeFireStateMessage_Start + def encode = ChangeFireStateMessage_Start.encode(this) +} + +object ChangeFireStateMessage_Start extends Marshallable[ChangeFireStateMessage_Start] { + implicit val codec : Codec[ChangeFireStateMessage_Start] = ( + ("item_guid" | PlanetSideGUID.codec) + ).as[ChangeFireStateMessage_Start] +} diff --git a/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala new file mode 100644 index 00000000..0efb37cc --- /dev/null +++ b/common/src/main/scala/net/psforever/packet/game/ChangeFireStateMessage_Stop.scala @@ -0,0 +1,19 @@ +// 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._ + +final case class ChangeFireStateMessage_Stop(item_guid : PlanetSideGUID) + extends PlanetSideGamePacket { + type Packet = ChangeFireStateMessage_Stop + def opcode = GamePacketOpcode.ChangeFireStateMessage_Stop + def encode = ChangeFireStateMessage_Stop.encode(this) +} + +object ChangeFireStateMessage_Stop extends Marshallable[ChangeFireStateMessage_Stop] { + implicit val codec : Codec[ChangeFireStateMessage_Stop] = ( + ("item_guid" | PlanetSideGUID.codec) + ).as[ChangeFireStateMessage_Stop] +} diff --git a/common/src/test/scala/GamePacketTest.scala b/common/src/test/scala/GamePacketTest.scala index 3a53014d..b809686f 100644 --- a/common/src/test/scala/GamePacketTest.scala +++ b/common/src/test/scala/GamePacketTest.scala @@ -224,5 +224,45 @@ class GamePacketTest extends Specification { pkt mustEqual string } } + + "ChangeFireStateMessage_Start" should { + val string = hex"39 4C00" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case ChangeFireStateMessage_Start(item_guid) => + item_guid mustEqual PlanetSideGUID(76) + case default => + ko + } + } + + "encode" in { + val msg = ChangeFireStateMessage_Start(PlanetSideGUID(76)) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } + } + + "ChangeFireStateMessage_Stop" should { + val string = hex"3A 4C00" + + "decode" in { + PacketCoding.DecodePacket(string).require match { + case ChangeFireStateMessage_Stop(item_guid) => + item_guid mustEqual PlanetSideGUID(76) + case default => + ko + } + } + + "encode" in { + val msg = ChangeFireStateMessage_Stop(PlanetSideGUID(76)) + val pkt = PacketCoding.EncodePacket(msg).require.toByteVector + + pkt mustEqual string + } + } } } diff --git a/pslogin/src/main/scala/WorldSessionActor.scala b/pslogin/src/main/scala/WorldSessionActor.scala index a666977a..2ac9f611 100644 --- a/pslogin/src/main/scala/WorldSessionActor.scala +++ b/pslogin/src/main/scala/WorldSessionActor.scala @@ -157,6 +157,12 @@ class WorldSessionActor extends Actor with MDCContextAware { case msg @ ChangeFireModeMessage(item_guid, fire_mode) => log.info("ChangeFireMode: " + msg) + case msg @ ChangeFireStateMessage_Start(item_guid) => + log.info("ChangeFireState_Start: " + msg) + + case msg @ ChangeFireStateMessage_Stop(item_guid) => + log.info("ChangeFireState_Stop: " + msg) + case default => log.debug(s"Unhandled GamePacket ${pkt}") }