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>
* 22 - `16` - VS Vehicle Training Area
* @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 {
type Packet = TrainingZoneMessage
def opcode = GamePacketOpcode.TrainingZoneMessage
@ -37,6 +39,7 @@ final case class TrainingZoneMessage(zone : Long)
object TrainingZoneMessage extends Marshallable[TrainingZoneMessage] {
implicit val codec : Codec[TrainingZoneMessage] = (
"zone" | uint32L
("zone" | PlanetSideGUID.codec) ::
("unk" | uint16L)
).as[TrainingZoneMessage]
}

View file

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