adding a field to TrainingZone for divided byte-length

This commit is contained in:
FateJH 2017-01-11 22:27:08 -05:00
parent de590cd4e2
commit 13e0f55f39
2 changed files with 8 additions and 5 deletions

View file

@ -27,8 +27,10 @@ import scodec.codecs._
* 21 - `15` - NC Vehicle Training Area<br> * 21 - `15` - NC Vehicle Training Area<br>
* 22 - `16` - VS Vehicle Training Area * 22 - `16` - VS Vehicle Training Area
* @param zone the virtual reality zone to send the player * @param zone the virtual reality zone to send the player
* @param unk na; always 0?
*/ */
final case class TrainingZoneMessage(zone : Long) final case class TrainingZoneMessage(zone : PlanetSideGUID,
unk : Int = 0)
extends PlanetSideGamePacket { extends PlanetSideGamePacket {
type Packet = TrainingZoneMessage type Packet = TrainingZoneMessage
def opcode = GamePacketOpcode.TrainingZoneMessage def opcode = GamePacketOpcode.TrainingZoneMessage
@ -37,6 +39,7 @@ final case class TrainingZoneMessage(zone : Long)
object TrainingZoneMessage extends Marshallable[TrainingZoneMessage] { object TrainingZoneMessage extends Marshallable[TrainingZoneMessage] {
implicit val codec : Codec[TrainingZoneMessage] = ( implicit val codec : Codec[TrainingZoneMessage] = (
"zone" | uint32L ("zone" | PlanetSideGUID.codec) ::
("unk" | uint16L)
).as[TrainingZoneMessage] ).as[TrainingZoneMessage]
} }

View file

@ -835,15 +835,15 @@ class GamePacketTest extends Specification {
"decode" in { "decode" in {
PacketCoding.DecodePacket(string).require match { PacketCoding.DecodePacket(string).require match {
case TrainingZoneMessage(zone) => case TrainingZoneMessage(zone, unk) =>
zone mustEqual 19 zone mustEqual PlanetSideGUID(19)
case default => case default =>
ko ko
} }
} }
"encode" in { "encode" in {
val msg = TrainingZoneMessage(19) val msg = TrainingZoneMessage(PlanetSideGUID(19))
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string pkt mustEqual string