comments and tests

This commit is contained in:
FateJH 2017-01-28 01:05:40 -05:00
parent 91a429506f
commit a3d8d891a1
2 changed files with 41 additions and 3 deletions

View file

@ -6,12 +6,27 @@ import scodec.Codec
import scodec.codecs._
/**
* na
* Causes the avatar to be prepped for drop pod use.<br>
* <br>
* This packet is dispatched from the server to all occupants of the HART shuttle when it has completed its take-off animation.
* When received by the client, that player's avatar is "removed from the world" and the Interstellar Map is displayed for them.
* The "Launch Drop Pod" button window is also made visible.
* Selecting individual continental maps for viewing and clicking on the landmasses has the expected behavior for drop pods implementation.<br>
* <br>
* Being seated on the HART shuttle at the time, a player's avatar does not physically exist when the packet is received.
* If the packet is received while the player is outside of the HART shuttle, the state of their avatar is not known to them.
* "Removed from the world" merely implies that one can not leave the Interstellar Map once it has been displayed.
* According to packet capture, their avatar is not explicitly deconstructed until the dropped-into map is loaded.<br>
* <br>
* When the packet is received on one's client, but is addressed to another player, nothing seems to happen to that player.
* If that player's model is outside of the HART, it will not deconstruct.
* Only the client's avatar can be affected by this packet.
* @param player_guid the player
* @param stasis whether or not the player is held in stasis
* @param stasis `true` by default;
* nothing when `false` (?)
*/
final case class PlayerStasisMessage(player_guid : PlanetSideGUID,
stasis : Boolean)
stasis : Boolean = true)
extends PlanetSideGamePacket {
type Packet = PlayerStasisMessage
def opcode = GamePacketOpcode.PlayerStasisMessage

View file

@ -1325,6 +1325,29 @@ class GamePacketTest extends Specification {
}
}
"PlayerStasisMessage" should {
val string = hex"8A 4B 00 80"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case PlayerStasisMessage(player_guid, stasis) =>
player_guid mustEqual PlanetSideGUID(75)
stasis mustEqual true
case default =>
ko
}
}
"encode" in {
"encode" in {
val msg = PlayerStasisMessage(PlanetSideGUID(75))
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}
}
"ContinentalLockUpdateMessage" should {
val string = hex"A8 16 00 40"