mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-03-01 19:23:38 +00:00
71 lines
3 KiB
Scala
71 lines
3 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.{ObjectClass, PlacementData, TrackedProjectileData}
|
||
|
|
import org.specs2.mutable._
|
||
|
|
import scodec.bits._
|
||
|
|
|
||
|
|
class TrackedProjectileDataTest extends Specification {
|
||
|
|
val string_striker_projectile = hex"17 C5000000 A4B 009D 4C129 0CB0A 9814 00 F5 E3 040000666686400"
|
||
|
|
|
||
|
|
"TrackedProjectileData" should {
|
||
|
|
"decode (striker 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.isDefined mustEqual true
|
||
|
|
data.get.isInstanceOf[TrackedProjectileData] mustEqual true
|
||
|
|
val projectile = data.get.asInstanceOf[TrackedProjectileData]
|
||
|
|
projectile.pos.coord.x mustEqual 4644.5938f
|
||
|
|
projectile.pos.coord.y mustEqual 5472.0938f
|
||
|
|
projectile.pos.coord.z mustEqual 82.375f
|
||
|
|
projectile.pos.orient.x mustEqual 0f
|
||
|
|
projectile.pos.orient.y mustEqual 30.9375f
|
||
|
|
projectile.pos.orient.z mustEqual 171.5625f
|
||
|
|
projectile.unk1 mustEqual 0
|
||
|
|
projectile.unk2 mustEqual TrackedProjectileData.striker_missile_targetting_projectile_data
|
||
|
|
case _ =>
|
||
|
|
ko
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
"encode (striker projectile)" in {
|
||
|
|
val obj = TrackedProjectileData.striker(
|
||
|
|
PlacementData(4644.5938f, 5472.0938f, 82.375f, 0f, 30.9375f, 171.5625f),
|
||
|
|
0
|
||
|
|
)
|
||
|
|
val msg = ObjectCreateMessage(ObjectClass.striker_missile_targeting_projectile, PlanetSideGUID(40192), obj)
|
||
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||
|
|
|
||
|
|
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)
|
||
|
|
}
|
||
|
|
|
||
|
|
"hunter_seeker" in {
|
||
|
|
TrackedProjectileData.hunter_seeker(PlacementData(0f, 0f, 0f), 0) mustEqual
|
||
|
|
TrackedProjectileData(PlacementData(0f, 0f, 0f), 0, TrackedProjectileData.hunter_seeker_missile_projectile_data)
|
||
|
|
}
|
||
|
|
|
||
|
|
"oicw" in {
|
||
|
|
TrackedProjectileData.oicw(PlacementData(0f, 0f, 0f), 0) mustEqual
|
||
|
|
TrackedProjectileData(PlacementData(0f, 0f, 0f), 0, TrackedProjectileData.oicw_projectile_data)
|
||
|
|
}
|
||
|
|
|
||
|
|
"starfire" in {
|
||
|
|
TrackedProjectileData.starfire(PlacementData(0f, 0f, 0f), 0) mustEqual
|
||
|
|
TrackedProjectileData(PlacementData(0f, 0f, 0f), 0, TrackedProjectileData.starfire_projectile_data)
|
||
|
|
}
|
||
|
|
|
||
|
|
"striker" in {
|
||
|
|
TrackedProjectileData.striker(PlacementData(0f, 0f, 0f), 0) mustEqual
|
||
|
|
TrackedProjectileData(PlacementData(0f, 0f, 0f), 0, TrackedProjectileData.striker_missile_targetting_projectile_data)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|