mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-02-20 23:23:35 +00:00
meta-stability in terms of the underlying structure that will eventually read off seated passengers in vehicles; the padding offsets just need tuning
This commit is contained in:
parent
052a318285
commit
4e41468cd0
9 changed files with 665 additions and 187 deletions
File diff suppressed because one or more lines are too long
|
|
@ -11,100 +11,111 @@ import scodec.bits._
|
|||
class UtilityVehiclesTest extends Specification {
|
||||
val string_ant = hex"17 C2000000 9E0 7C01 6C2D7 65535 CA16 00 00 00 4400003FC000000"
|
||||
val string_ams = hex"17 B8010000 970 3D10 002D765535CA16000000 402285BB0037E4100749E1D03000000620D83A0A00000195798741C00000332E40D84800000"
|
||||
val string_ams_seated =
|
||||
hex"17ec060000970fe0f030898abda28127f007ff9c1f2f80c0001e18ff00001051e40786400000008c50004c0041006d0069006e006700790075006500540052007c00000304217c859e8080000000000000002503420022c02a002a002a002a0050004c0041002a002a002a002a00010027e300940000016c0400023c040002285a086c2f00c80000000000300210288740800000004046f17423018000002c4d6190400000001010704a86406000002bc770842000000004041c5f21d01800000e075821902000000623e84208000001950588c1800000332ea0f840000000"
|
||||
|
||||
"Utility vehicles" should {
|
||||
"decode (ant)" in {
|
||||
PacketCoding.DecodePacket(string_ant).require match {
|
||||
// "decode (ant)" in {
|
||||
// PacketCoding.DecodePacket(string_ant).require match {
|
||||
// case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
||||
// len mustEqual 194L
|
||||
// cls mustEqual ObjectClass.ant
|
||||
// guid mustEqual PlanetSideGUID(380)
|
||||
// parent.isDefined mustEqual false
|
||||
// data.isDefined mustEqual true
|
||||
// data.get.isInstanceOf[VehicleData] mustEqual true
|
||||
// val ant = data.get.asInstanceOf[VehicleData]
|
||||
// ant.basic.pos.coord.x mustEqual 3674.8438f
|
||||
// ant.basic.pos.coord.y mustEqual 2726.789f
|
||||
// ant.basic.pos.coord.z mustEqual 91.15625f
|
||||
// ant.basic.pos.orient.x mustEqual 0f
|
||||
// ant.basic.pos.orient.y mustEqual 0f
|
||||
// ant.basic.pos.orient.z mustEqual 90.0f
|
||||
// ant.basic.faction mustEqual PlanetSideEmpire.VS
|
||||
// ant.basic.unk mustEqual 2
|
||||
// ant.basic.player_guid mustEqual PlanetSideGUID(0)
|
||||
// ant.health mustEqual 255
|
||||
// ant.driveState mustEqual DriveState.Mobile
|
||||
// case _ =>
|
||||
// ko
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// "decode (ams)" in {
|
||||
// PacketCoding.DecodePacket(string_ams).require match {
|
||||
// case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
||||
// len mustEqual 440L
|
||||
// cls mustEqual ObjectClass.ams
|
||||
// guid mustEqual PlanetSideGUID(4157)
|
||||
// parent.isDefined mustEqual false
|
||||
// data.isDefined mustEqual true
|
||||
// data.get.isInstanceOf[VehicleData] mustEqual true
|
||||
// val ams = data.get.asInstanceOf[VehicleData]
|
||||
// ams.basic.pos.coord.x mustEqual 3674.0f
|
||||
// ams.basic.pos.coord.y mustEqual 2726.789f
|
||||
// ams.basic.pos.coord.z mustEqual 91.15625f
|
||||
// ams.basic.pos.orient.x mustEqual 0f
|
||||
// ams.basic.pos.orient.y mustEqual 0f
|
||||
// ams.basic.pos.orient.z mustEqual 90.0f
|
||||
// ams.basic.faction mustEqual PlanetSideEmpire.VS
|
||||
// ams.basic.unk mustEqual 0
|
||||
// ams.basic.player_guid mustEqual PlanetSideGUID(34082)
|
||||
// ams.unk1 mustEqual 2
|
||||
// ams.health mustEqual 236
|
||||
// ams.unk2 mustEqual false
|
||||
// ams.driveState mustEqual DriveState.Deployed
|
||||
//
|
||||
// ams.inventory.isDefined mustEqual true
|
||||
// val inv = ams.inventory.get.contents
|
||||
// inv.head.objectClass mustEqual ObjectClass.matrix_terminalc
|
||||
// inv.head.guid mustEqual PlanetSideGUID(3663)
|
||||
// inv.head.parentSlot mustEqual 1
|
||||
// inv.head.obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
// inv(1).objectClass mustEqual ObjectClass.ams_respawn_tube
|
||||
// inv(1).guid mustEqual PlanetSideGUID(3638)
|
||||
// inv(1).parentSlot mustEqual 2
|
||||
// inv(1).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
// inv(2).objectClass mustEqual ObjectClass.order_terminala
|
||||
// inv(2).guid mustEqual PlanetSideGUID(3827)
|
||||
// inv(2).parentSlot mustEqual 3
|
||||
// inv(2).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
// inv(3).objectClass mustEqual ObjectClass.order_terminalb
|
||||
// inv(3).guid mustEqual PlanetSideGUID(3556)
|
||||
// inv(3).parentSlot mustEqual 4
|
||||
// inv(3).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
// case _ =>
|
||||
// ko
|
||||
// }
|
||||
// }
|
||||
//
|
||||
"decode (ams, seated)" in {
|
||||
PacketCoding.DecodePacket(string_ams_seated).require match {
|
||||
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
||||
len mustEqual 194L
|
||||
cls mustEqual ObjectClass.ant
|
||||
guid mustEqual PlanetSideGUID(380)
|
||||
parent.isDefined mustEqual false
|
||||
data.isDefined mustEqual true
|
||||
data.get.isInstanceOf[VehicleData] mustEqual true
|
||||
val ant = data.get.asInstanceOf[VehicleData]
|
||||
ant.basic.pos.coord.x mustEqual 3674.8438f
|
||||
ant.basic.pos.coord.y mustEqual 2726.789f
|
||||
ant.basic.pos.coord.z mustEqual 91.15625f
|
||||
ant.basic.pos.orient.x mustEqual 0f
|
||||
ant.basic.pos.orient.y mustEqual 0f
|
||||
ant.basic.pos.orient.z mustEqual 90.0f
|
||||
ant.basic.faction mustEqual PlanetSideEmpire.VS
|
||||
ant.basic.unk mustEqual 2
|
||||
ant.basic.player_guid mustEqual PlanetSideGUID(0)
|
||||
ant.health mustEqual 255
|
||||
ant.driveState mustEqual DriveState.Mobile
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"decode (ams)" in {
|
||||
PacketCoding.DecodePacket(string_ams).require match {
|
||||
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
||||
len mustEqual 440L
|
||||
cls mustEqual ObjectClass.ams
|
||||
guid mustEqual PlanetSideGUID(4157)
|
||||
parent.isDefined mustEqual false
|
||||
data.isDefined mustEqual true
|
||||
data.get.isInstanceOf[VehicleData] mustEqual true
|
||||
val ams = data.get.asInstanceOf[VehicleData]
|
||||
ams.basic.pos.coord.x mustEqual 3674.0f
|
||||
ams.basic.pos.coord.y mustEqual 2726.789f
|
||||
ams.basic.pos.coord.z mustEqual 91.15625f
|
||||
ams.basic.pos.orient.x mustEqual 0f
|
||||
ams.basic.pos.orient.y mustEqual 0f
|
||||
ams.basic.pos.orient.z mustEqual 90.0f
|
||||
ams.basic.faction mustEqual PlanetSideEmpire.VS
|
||||
ams.basic.unk mustEqual 0
|
||||
ams.basic.player_guid mustEqual PlanetSideGUID(34082)
|
||||
ams.unk1 mustEqual 2
|
||||
ams.health mustEqual 236
|
||||
ams.unk2 mustEqual false
|
||||
ams.driveState mustEqual DriveState.Deployed
|
||||
|
||||
ams.inventory.isDefined mustEqual true
|
||||
val inv = ams.inventory.get.contents
|
||||
inv.head.objectClass mustEqual ObjectClass.matrix_terminalc
|
||||
inv.head.guid mustEqual PlanetSideGUID(3663)
|
||||
inv.head.parentSlot mustEqual 1
|
||||
inv.head.obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
inv(1).objectClass mustEqual ObjectClass.ams_respawn_tube
|
||||
inv(1).guid mustEqual PlanetSideGUID(3638)
|
||||
inv(1).parentSlot mustEqual 2
|
||||
inv(1).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
inv(2).objectClass mustEqual ObjectClass.order_terminala
|
||||
inv(2).guid mustEqual PlanetSideGUID(3827)
|
||||
inv(2).parentSlot mustEqual 3
|
||||
inv(2).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
inv(3).objectClass mustEqual ObjectClass.order_terminalb
|
||||
inv(3).guid mustEqual PlanetSideGUID(3556)
|
||||
inv(3).parentSlot mustEqual 4
|
||||
inv(3).obj.isInstanceOf[CommonTerminalData] mustEqual true
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode (ant)" in {
|
||||
val obj = VehicleData(
|
||||
CommonFieldData(
|
||||
PlacementData(3674.8438f, 2726.789f, 91.15625f, 0f, 0f, 90.0f),
|
||||
PlanetSideEmpire.VS, 2
|
||||
),
|
||||
0,
|
||||
255,
|
||||
false, false,
|
||||
DriveState.Mobile,
|
||||
false, false, false,
|
||||
Some(UtilityVehicleData(0)),
|
||||
None
|
||||
)(VehicleFormat.Utility)
|
||||
val msg = ObjectCreateMessage(ObjectClass.ant, PlanetSideGUID(380), obj)
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
||||
pkt mustEqual string_ant
|
||||
}
|
||||
//
|
||||
// "encode (ant)" in {
|
||||
// val obj = VehicleData(
|
||||
// CommonFieldData(
|
||||
// PlacementData(3674.8438f, 2726.789f, 91.15625f, 0f, 0f, 90.0f),
|
||||
// PlanetSideEmpire.VS, 2
|
||||
// ),
|
||||
// 0,
|
||||
// 255,
|
||||
// false, false,
|
||||
// DriveState.Mobile,
|
||||
// false, false, false,
|
||||
// Some(UtilityVehicleData(0)),
|
||||
// None
|
||||
// )(VehicleFormat.Utility)
|
||||
// val msg = ObjectCreateMessage(ObjectClass.ant, PlanetSideGUID(380), obj)
|
||||
// val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
//
|
||||
// pkt mustEqual string_ant
|
||||
// }
|
||||
|
||||
"encode (ams)" in {
|
||||
val obj = VehicleData(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue