comments in the main packet file and working tests

This commit is contained in:
FateJH 2017-04-20 19:02:54 -04:00
parent 749d2d2c50
commit 941b1f01bb
2 changed files with 45 additions and 6 deletions

View file

@ -6,16 +6,26 @@ import scodec.Codec
import scodec.codecs._
/**
* na
* Dispatched from a client when its user is controlling a secondary object whose state must be updated.<br>
* <br>
* When `ChildObjectStateMessage` is being sent to the server, it replaces `PlayerStateMessage`.
* The packet frequently gets hidden in a `MultiPacket`, though it is not functionally essential to do that.<br>
* <br>
* Note the lack of position data.
* The secondary object in question is updated in position through another means or is stationary.
* The only concern is the direction the object is facing.
* The angles are relative to the object's normal forward-facing and typically begin tracking at 0, 0 (forward-facing).
* @param object_guid the object being manipulated (controlled)
* @param pitch the angle with respect to the sky and the ground towards which the object is directed;
* an 8-bit unsigned value;
* 0 is perfectly level and forward-facing, wrapping around at 255;
* positive rotation is occurs by rotating downwards from forward-facing
* 0 is perfectly level and forward-facing and mapped to 255;
* positive rotation is downwards from forward-facing;
* between 7 (down) and 231 (up), for 32 angles
* @param yaw the angle with respect to the horizon towards which the object is directed;
* an 8-bit unsigned value;
* 0 is forward-facing, wrapping around at 255;
* positive rotation is clockwise of forward-facing
* an 8-bit unsigned value;
* 0 is forward-facing, wrapping around at 127;
* positive rotation is counter-clockwise of forward-facing;
* full rotation
*/
final case class ChildObjectStateMessage(object_guid : PlanetSideGUID,
pitch : Int,

View file

@ -0,0 +1,29 @@
// Copyright (c) 2017 PSForever
package game
import org.specs2.mutable._
import net.psforever.packet._
import net.psforever.packet.game._
import scodec.bits._
class ChildObjectStateMessageTest extends Specification {
val string = hex"1E 640B 06 47"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case ChildObjectStateMessage(object_guid, pitch, yaw) =>
object_guid mustEqual PlanetSideGUID(2916)
pitch mustEqual 6
yaw mustEqual 71
case _ =>
ko
}
}
"encode" in {
val msg = ChildObjectStateMessage(PlanetSideGUID(2916), 6, 71)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}