Packet: MoveItemMessage

* Add MoveItemMessage packet

* Add MoveItemMessage test

* Add MoveItemMessage handler stub
This commit is contained in:
tfarley 2016-07-23 23:53:35 -07:00 committed by pschord
parent dc6488edfc
commit 8ffb455b5d
4 changed files with 55 additions and 1 deletions

View file

@ -338,7 +338,7 @@ object GamePacketOpcode extends Enumeration {
case MountVehicleMsg => noDecoder(opcode)
case DismountVehicleMsg => noDecoder(opcode)
case UseItemMessage => noDecoder(opcode)
case MoveItemMessage => noDecoder(opcode)
case MoveItemMessage => game.MoveItemMessage.decode
case ChatMsg => game.ChatMsg.decode
case CharacterNoRecordMessage => noDecoder(opcode)

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._
final case class MoveItemMessage(item_guid : PlanetSideGUID,
avatar_guid_1 : PlanetSideGUID,
avatar_guid_2 : PlanetSideGUID,
dest : Int,
unk1 : Int)
extends PlanetSideGamePacket {
type Packet = MoveItemMessage
def opcode = GamePacketOpcode.MoveItemMessage
def encode = MoveItemMessage.encode(this)
}
object MoveItemMessage extends Marshallable[MoveItemMessage] {
implicit val codec : Codec[MoveItemMessage] = (
("item_guid" | PlanetSideGUID.codec) ::
("avatar_guid_1" | PlanetSideGUID.codec) ::
("avatar_guid_2" | PlanetSideGUID.codec) ::
("dest" | uint16L) ::
("unk1" | uint16L)
).as[MoveItemMessage]
}

View file

@ -390,5 +390,29 @@ class GamePacketTest extends Specification {
pkt mustEqual string
}
}
"MoveItemMessage" should {
val string = hex"11 4C00 4B00 4B00 0900 0100"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case MoveItemMessage(item_guid, avatar_guid_1, avatar_guid_2, dest, unk1) =>
item_guid mustEqual PlanetSideGUID(76)
avatar_guid_1 mustEqual PlanetSideGUID(75)
avatar_guid_2 mustEqual PlanetSideGUID(75)
dest mustEqual 9
unk1 mustEqual 1
case default =>
ko
}
}
"encode" in {
val msg = MoveItemMessage(PlanetSideGUID(76), PlanetSideGUID(75), PlanetSideGUID(75), 9, 1)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}
}
}

View file

@ -185,6 +185,9 @@ class WorldSessionActor extends Actor with MDCContextAware {
case msg @ ObjectDeleteMessage(object_guid, unk1) =>
log.info("ObjectDelete: " + msg)
case msg @ MoveItemMessage(item_guid, avatar_guid_1, avatar_guid_2, dest, unk1) =>
log.info("MoveItem: " + msg)
case default => log.debug(s"Unhandled GamePacket ${pkt}")
}