mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-01-19 18:44:45 +00:00
58 lines
2.1 KiB
Scala
58 lines
2.1 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package game.objectcreate
|
|
|
|
import net.psforever.packet.PacketCoding
|
|
import net.psforever.packet.game.{ObjectCreateMessage, PlanetSideGUID}
|
|
import net.psforever.packet.game.objectcreate._
|
|
import net.psforever.types.PlanetSideEmpire
|
|
import org.specs2.mutable._
|
|
import scodec.bits._
|
|
|
|
class TRAPDataTest extends Specification {
|
|
val string_trap = hex"17 BB000000 A8B630A 39FA6 FD666 801C 00 00 00 44C6097F80F00"
|
|
|
|
"TRAPData" should {
|
|
"decode" in {
|
|
PacketCoding.DecodePacket(string_trap).require match {
|
|
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
|
len mustEqual 187
|
|
cls mustEqual ObjectClass.tank_traps
|
|
guid mustEqual PlanetSideGUID(2659)
|
|
parent.isDefined mustEqual false
|
|
data.isDefined mustEqual true
|
|
data.get.isInstanceOf[TRAPData] mustEqual true
|
|
val trap = data.get.asInstanceOf[TRAPData]
|
|
trap.deploy.pos.coord.x mustEqual 3572.4453f
|
|
trap.deploy.pos.coord.y mustEqual 3277.9766f
|
|
trap.deploy.pos.coord.z mustEqual 114.0f
|
|
trap.deploy.pos.orient.x mustEqual 0f
|
|
trap.deploy.pos.orient.y mustEqual 0f
|
|
trap.deploy.pos.orient.z mustEqual 90.0f
|
|
trap.deploy.faction mustEqual PlanetSideEmpire.VS
|
|
trap.deploy.unk mustEqual 2
|
|
trap.health mustEqual 255
|
|
trap.deploy.player_guid mustEqual PlanetSideGUID(2502)
|
|
case _ =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"encode" in {
|
|
val obj = TRAPData(
|
|
CommonFieldData(
|
|
PlacementData(3572.4453f, 3277.9766f, 114.0f, 0f, 0f, 90.0f),
|
|
PlanetSideEmpire.VS, 2, PlanetSideGUID(2502)
|
|
),
|
|
255
|
|
)
|
|
val msg = ObjectCreateMessage(ObjectClass.tank_traps, PlanetSideGUID(2659), obj)
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
|
val pkt_bitv = pkt.toBitVector
|
|
val ori_bitv = string_trap.toBitVector
|
|
pkt_bitv.take(173) mustEqual ori_bitv.take(173)
|
|
pkt_bitv.drop(185) mustEqual ori_bitv.drop(185)
|
|
//TODO work on TRAPData to make this pass as a single stream
|
|
}
|
|
}
|
|
}
|