From 07af9408174b681ede25e2ec0696279381b4cef6 Mon Sep 17 00:00:00 2001 From: Resaec Date: Mon, 22 Dec 2025 01:22:15 +0100 Subject: [PATCH] Update member names --- .../packet/game/BindPlayerMessage.scala | 6 ++- .../packet/game/SquadBindInfoMessage.scala | 31 +++++++++----- .../game/SquadFacilityBindInfoMessage.scala | 20 ++++++--- .../SquadFacilityBindInfoMessageTest.scala | 42 +++++++++---------- 4 files changed, 59 insertions(+), 40 deletions(-) diff --git a/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala b/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala index 50fa0e472..72f83fa3f 100644 --- a/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala +++ b/src/main/scala/net/psforever/packet/game/BindPlayerMessage.scala @@ -58,7 +58,9 @@ object BindStatus extends Enumeration(1) { * @param zone_number the number of the zone in which to display this spawn option; * if `zone_number` is not the current zone, and the action is positive, * a small map of the alternate zone with selectable spawn point will become visible - * @param unk4 na + * @param map_id the "MapID" of the facility the player is bound to; + * if spawn_group is AMS it is likely the source facility of the AMS; + * with spawn_group AMS pos does point to the AMS position; * @param pos coordinates for any displayed deployment map icon; * `x` and `y` determine the position */ @@ -69,7 +71,7 @@ final case class BindPlayerMessage( logging: Boolean, spawn_group: SpawnGroup, zone_number: Long, - unk4: Long, + map_id: Long, pos: Vector3 ) extends PlanetSideGamePacket { type Packet = BindPlayerMessage diff --git a/src/main/scala/net/psforever/packet/game/SquadBindInfoMessage.scala b/src/main/scala/net/psforever/packet/game/SquadBindInfoMessage.scala index 2dd4d4697..173d5e5d6 100644 --- a/src/main/scala/net/psforever/packet/game/SquadBindInfoMessage.scala +++ b/src/main/scala/net/psforever/packet/game/SquadBindInfoMessage.scala @@ -7,8 +7,8 @@ import scodec.Codec import scodec.codecs._ final case class SquadBindInfoMessage( - unk0: Int, // squad? - elements: Vector[SquadBindEntry], + unk0: Int, // squad/platoon index? + elements: Vector[SquadBindEntry], ) extends PlanetSideGamePacket { type Packet = SquadBindInfoMessage def opcode = GamePacketOpcode.SquadBindInfoMessage @@ -17,19 +17,28 @@ final case class SquadBindInfoMessage( object SquadBindInfoMessage extends Marshallable[SquadBindInfoMessage] { + /** + * SquadBindEntry + * + * If isBound is false unk1 and unk2 are 0. + * unk1 + * @param squadMember index of squad member + * @param zoneID zone ID as in zX / mapX + * @param mapID MapID identifier in mapX.json + * @param isBound is bound to a facility + */ final case class SquadBindEntry( - unk0: Long, - unk1: Long, - unk2: Int, - unk3: Boolean, + squadMember: Long, + zoneID: Long, + mapID: Int, + isBound: Boolean, ) - private implicit val squadBindEntryCodec: Codec[SquadBindEntry] = ( - ("unk0" | uint32L) :: - ("unk1" | uint32L) :: - ("unk2" | uint16L) :: - ("unk3" | bool) + ("squadMember" | uint32L) :: + ("zoneID" | uint32L) :: + ("mapID" | uint16L) :: + ("isBound" | bool) ).as[SquadBindEntry] implicit val codec: Codec[SquadBindInfoMessage] = ( diff --git a/src/main/scala/net/psforever/packet/game/SquadFacilityBindInfoMessage.scala b/src/main/scala/net/psforever/packet/game/SquadFacilityBindInfoMessage.scala index 895212710..b5e5dfe7b 100644 --- a/src/main/scala/net/psforever/packet/game/SquadFacilityBindInfoMessage.scala +++ b/src/main/scala/net/psforever/packet/game/SquadFacilityBindInfoMessage.scala @@ -5,11 +5,19 @@ import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacke import scodec.Codec import scodec.codecs._ +/** + * SquadFacilityBindInfoMessage + * @param unk0 + * @param squadID ID of the squad this message is relating to + * @param mapID MapID of the facility the player is bound to; + * alternatively of the facility the AMS was pulled from?; + * @param zoneID ZoneID of where the bind is from and the MapID relates to + */ final case class SquadFacilityBindInfoMessage( unk0: Boolean, - unk1: Long, - unk2: Long, - unk3: Long + squadID: Long, + mapID: Long, + zoneID: Long ) extends PlanetSideGamePacket { type Packet = EmpireBenefitsMessage def opcode = GamePacketOpcode.SquadFacilityBindInfoMessage @@ -20,8 +28,8 @@ object SquadFacilityBindInfoMessage extends Marshallable[SquadFacilityBindInfoMe implicit val codec: Codec[SquadFacilityBindInfoMessage] = ( ("unk0" | bool) :: - ("unk1" | uint32L) :: - ("unk2" | uint32L) :: - ("unk3" | uint32L) + ("squadID" | uint32L) :: + ("mapID" | uint32L) :: + ("zoneID" | uint32L) ).as[SquadFacilityBindInfoMessage] } diff --git a/src/test/scala/game/SquadFacilityBindInfoMessageTest.scala b/src/test/scala/game/SquadFacilityBindInfoMessageTest.scala index e757a2979..85d2bfc5c 100644 --- a/src/test/scala/game/SquadFacilityBindInfoMessageTest.scala +++ b/src/test/scala/game/SquadFacilityBindInfoMessageTest.scala @@ -14,11 +14,11 @@ class SquadFacilityBindInfoMessageTest extends Specification { "decode sample1" in { PacketCoding.decodePacket(sample1).require match { - case SquadFacilityBindInfoMessage(unk0, unk1, unk2, unk3) => + case SquadFacilityBindInfoMessage(unk0, squadID, mapID, zoneID) => unk0 mustEqual false - unk1 mustEqual 7 - unk2 mustEqual 0 - unk3 mustEqual 0 + squadID mustEqual 7 + mapID mustEqual 0 + zoneID mustEqual 0 case _ => ko } @@ -27,9 +27,9 @@ class SquadFacilityBindInfoMessageTest extends Specification { "encode sample1" in { val msg = SquadFacilityBindInfoMessage( unk0 = false, - unk1 = 7, - unk2 = 0, - unk3 = 0 + squadID = 7, + mapID = 0, + zoneID = 0 ) val pkt = PacketCoding.encodePacket(msg).require.toByteVector @@ -38,11 +38,11 @@ class SquadFacilityBindInfoMessageTest extends Specification { "decode sample2" in { PacketCoding.decodePacket(sample2).require match { - case SquadFacilityBindInfoMessage(unk0, unk1, unk2, unk3) => + case SquadFacilityBindInfoMessage(unk0, squadID, mapID, zoneID) => unk0 mustEqual false - unk1 mustEqual 4 - unk2 mustEqual 16 - unk3 mustEqual 7 + squadID mustEqual 4 + mapID mustEqual 16 + zoneID mustEqual 7 case _ => ko } @@ -51,9 +51,9 @@ class SquadFacilityBindInfoMessageTest extends Specification { "encode sample2" in { val msg = SquadFacilityBindInfoMessage( unk0 = false, - unk1 = 4, - unk2 = 16, - unk3 = 7 + squadID = 4, + mapID = 16, + zoneID = 7 ) val pkt = PacketCoding.encodePacket(msg).require.toByteVector @@ -62,11 +62,11 @@ class SquadFacilityBindInfoMessageTest extends Specification { "decode sample3" in { PacketCoding.decodePacket(sample3).require match { - case SquadFacilityBindInfoMessage(unk0, unk1, unk2, unk3) => + case SquadFacilityBindInfoMessage(unk0, squadID, mapID, zoneID) => unk0 mustEqual false - unk1 mustEqual 3 - unk2 mustEqual 9 - unk3 mustEqual 5 + squadID mustEqual 3 + mapID mustEqual 9 + zoneID mustEqual 5 case _ => ko } @@ -75,9 +75,9 @@ class SquadFacilityBindInfoMessageTest extends Specification { "encode sample3" in { val msg = SquadFacilityBindInfoMessage( unk0 = false, - unk1 = 3, - unk2 = 9, - unk3 = 5 + squadID = 3, + mapID = 9, + zoneID = 5 ) val pkt = PacketCoding.encodePacket(msg).require.toByteVector