mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-03-01 11:13:38 +00:00
118 lines
5.1 KiB
Scala
118 lines
5.1 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package game.objectcreate
|
|
|
|
import net.psforever.packet.PacketCoding
|
|
import net.psforever.packet.game.ObjectCreateMessage
|
|
import net.psforever.packet.game.objectcreate._
|
|
import net.psforever.types.{PlanetSideEmpire, PlanetSideGUID, Vector3}
|
|
import org.specs2.mutable._
|
|
import scodec.bits._
|
|
|
|
class RemoteProjectileDataTest extends Specification {
|
|
val string_striker_projectile = hex"17 C5000000 A4B 009D 4C129 0CB0A 9814 00 F5 E3 040000666686400"
|
|
val string_hunter_seeker_missile_projectile = hex"17 c5000000 ca9 ab9e af127 ec465 3723 00 15 c4 2400009a99c9400"
|
|
|
|
"RemoteProjectileData" should {
|
|
"decode (striker_missile_targeting_projectile)" in {
|
|
PacketCoding.DecodePacket(string_striker_projectile).require match {
|
|
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
|
len mustEqual 197
|
|
cls mustEqual ObjectClass.striker_missile_targeting_projectile
|
|
guid mustEqual PlanetSideGUID(40192)
|
|
parent.isDefined mustEqual false
|
|
data match {
|
|
case RemoteProjectileData(CommonFieldDataWithPlacement(pos, deploy), unk2, lim, unk3, unk4, unk5) =>
|
|
pos.coord mustEqual Vector3(4644.5938f, 5472.0938f, 82.375f)
|
|
pos.orient mustEqual Vector3(0, 30.9375f, 171.5625f)
|
|
deploy.faction mustEqual PlanetSideEmpire.TR
|
|
deploy.bops mustEqual false
|
|
deploy.alternate mustEqual false
|
|
deploy.v1 mustEqual true
|
|
deploy.v2.isEmpty mustEqual true
|
|
deploy.jammered mustEqual false
|
|
deploy.v4.isEmpty mustEqual true
|
|
deploy.v5.isEmpty mustEqual true
|
|
deploy.guid mustEqual PlanetSideGUID(0)
|
|
|
|
unk2 mustEqual 26214
|
|
lim mustEqual 134
|
|
unk3 mustEqual FlightPhysics.State4
|
|
unk4 mustEqual 0
|
|
unk5 mustEqual 0
|
|
case _ =>
|
|
ko
|
|
}
|
|
case _ =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"decode (hunter_seeker_missile_projectile)" in {
|
|
PacketCoding.DecodePacket(string_hunter_seeker_missile_projectile).require match {
|
|
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
|
len mustEqual 197
|
|
cls mustEqual ObjectClass.hunter_seeker_missile_projectile
|
|
guid mustEqual PlanetSideGUID(40619)
|
|
parent.isDefined mustEqual false
|
|
data match {
|
|
case RemoteProjectileData(CommonFieldDataWithPlacement(pos, deploy), unk2, lim, unk3, unk4, unk5) =>
|
|
pos.coord mustEqual Vector3(3621.3672f, 2701.8438f, 140.85938f)
|
|
pos.orient mustEqual Vector3(0, 300.9375f, 258.75f)
|
|
deploy.faction mustEqual PlanetSideEmpire.NC
|
|
deploy.bops mustEqual false
|
|
deploy.alternate mustEqual false
|
|
deploy.v1 mustEqual true
|
|
deploy.v2.isEmpty mustEqual true
|
|
deploy.jammered mustEqual false
|
|
deploy.v4.isEmpty mustEqual true
|
|
deploy.v5.isEmpty mustEqual true
|
|
deploy.guid mustEqual PlanetSideGUID(0)
|
|
|
|
unk2 mustEqual 39577
|
|
lim mustEqual 201
|
|
unk3 mustEqual FlightPhysics.State4
|
|
unk4 mustEqual 0
|
|
unk5 mustEqual 0
|
|
case _ =>
|
|
ko
|
|
}
|
|
case _ =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"encode (striker_missile_targeting_projectile)" in {
|
|
val obj = RemoteProjectileData(
|
|
CommonFieldDataWithPlacement(
|
|
PlacementData(4644.5938f, 5472.0938f, 82.375f, 0f, 30.9375f, 171.5625f),
|
|
CommonFieldData(PlanetSideEmpire.TR, false, false, true, None, false, None, None, PlanetSideGUID(0))
|
|
),
|
|
26214, 134, FlightPhysics.State4, 0, 0
|
|
)
|
|
val msg = ObjectCreateMessage(ObjectClass.striker_missile_targeting_projectile, PlanetSideGUID(40192), obj)
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
|
//pkt mustEqual string_striker_projectile
|
|
|
|
pkt.toBitVector.take(132) mustEqual string_striker_projectile.toBitVector.take(132)
|
|
pkt.toBitVector.drop(133).take(7) mustEqual string_striker_projectile.toBitVector.drop(133).take(7)
|
|
pkt.toBitVector.drop(141) mustEqual string_striker_projectile.toBitVector.drop(141)
|
|
}
|
|
}
|
|
|
|
"encode (hunter_seeker_missile_projectile)" in {
|
|
val obj = RemoteProjectileData(
|
|
CommonFieldDataWithPlacement(
|
|
PlacementData(3621.3672f, 2701.8438f, 140.85938f, 0, 300.9375f, 258.75f),
|
|
CommonFieldData(PlanetSideEmpire.NC, false, false, true, None, false, None, None, PlanetSideGUID(0))
|
|
),
|
|
39577, 201, FlightPhysics.State4, 0, 0
|
|
)
|
|
val msg = ObjectCreateMessage(ObjectClass.hunter_seeker_missile_projectile, PlanetSideGUID(40619), obj)
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
|
//pkt mustEqual string_hunter_seeker_missile_projectile
|
|
|
|
pkt.toBitVector.take(132) mustEqual string_hunter_seeker_missile_projectile.toBitVector.take(132)
|
|
pkt.toBitVector.drop(133).take(7) mustEqual string_hunter_seeker_missile_projectile.toBitVector.drop(133).take(7)
|
|
pkt.toBitVector.drop(141) mustEqual string_hunter_seeker_missile_projectile.toBitVector.drop(141)
|
|
}
|
|
}
|