Packet: ZoneForcedCavernConnectionsMessage (#122)

* initial ZoneForcedCavernConnectionsMessage packet and tests

* adjusted tests so that 2u field has a value; minor comment change to packet file
This commit is contained in:
Fate-JH 2017-03-19 18:40:17 -04:00 committed by pschord
parent 1f713a52f6
commit 07a23d7d26
3 changed files with 56 additions and 1 deletions

View file

@ -588,7 +588,7 @@ object GamePacketOpcode extends Enumeration {
case 0xe0 => noDecoder(SquadBindInfoMessage)
case 0xe1 => noDecoder(AudioSequenceMessage)
case 0xe2 => noDecoder(SquadFacilityBindInfoMessage)
case 0xe3 => noDecoder(ZoneForcedCavernConnectionsMessage)
case 0xe3 => game.ZoneForcedCavernConnectionsMessage.decode
case 0xe4 => noDecoder(MissionActionMessage)
case 0xe5 => noDecoder(MissionKillTriggerMessage)
case 0xe6 => game.ReplicationStreamMessage.decode

View file

@ -0,0 +1,26 @@
// Copyright (c) 2017 PSForever
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
/**
* Dispatched to the client in regards to cavern connections via geowarp gates.
* @param zone the zone
* @param unk na
*/
final case class ZoneForcedCavernConnectionsMessage(zone : PlanetSideGUID,
unk : Int)
extends PlanetSideGamePacket {
type Packet = ZoneForcedCavernConnectionsMessage
def opcode = GamePacketOpcode.ZoneForcedCavernConnectionsMessage
def encode = ZoneForcedCavernConnectionsMessage.encode(this)
}
object ZoneForcedCavernConnectionsMessage extends Marshallable[ZoneForcedCavernConnectionsMessage] {
implicit val codec : Codec[ZoneForcedCavernConnectionsMessage] = (
("zone" | PlanetSideGUID.codec) ::
("unk" | uint2L)
).as[ZoneForcedCavernConnectionsMessage]
}

View file

@ -0,0 +1,29 @@
// Copyright (c) 2017 PSForever
package game
import org.specs2.mutable._
import net.psforever.packet._
import net.psforever.packet.game._
import net.psforever.types.Vector3
import scodec.bits._
class ZoneForcedCavernConnectionsMessageTest extends Specification {
val string = hex"E3200040"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case ZoneForcedCavernConnectionsMessage(zone, unk) =>
zone mustEqual PlanetSideGUID(32)
unk mustEqual 1
case _ =>
ko
}
}
"encode" in {
val msg = ZoneForcedCavernConnectionsMessage(PlanetSideGUID(32), 1)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}