slight file modifications; added tests

This commit is contained in:
FateJH 2016-09-30 13:52:44 -04:00
parent 51b0b6905d
commit e6c5f54647
3 changed files with 36 additions and 19 deletions

View file

@ -1,30 +1,24 @@
// Copyright (c) 2016 PSForever.net to present
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
object GrenadeState extends Enumeration {
type Type = Value
val unk0,
PRIMED,
THROWN,
unk3
= Value
implicit val codec = PacketHelpers.createEnumerationCodec(this, uintL(1))
}
/**
* na
* Report the state of the "grenade throw" animation for this player.<br>
* <br>
* States:<br>
* 1 - prepare for throwing (grenade held back over shoulder)<br>
* 2 - throwing (grenade released overhand)<br>
* <br>
* Exploration:<br>
* How many grenade states are possible?
* @param player_guid the player
* @param count the state
* @param state the animation state
*/
//case msg @ AvatarGrenadeStateMessage(player_guid, state) =>
//log.info("AvatarGrenadeStateMessage: " + msg)
final case class AvatarGrenadeStateMessage(player_guid : PlanetSideGUID,
count : GrenadeState.Value)
state : Int)
extends PlanetSideGamePacket {
type Packet = AvatarGrenadeStateMessage
def opcode = GamePacketOpcode.AvatarGrenadeStateMessage
@ -34,7 +28,6 @@ final case class AvatarGrenadeStateMessage(player_guid : PlanetSideGUID,
object AvatarGrenadeStateMessage extends Marshallable[AvatarGrenadeStateMessage] {
implicit val codec : Codec[AvatarGrenadeStateMessage] = (
("player_guid" | PlanetSideGUID.codec) ::
("state" | GrenadeState.codec)
("state" | uint8L)
).as[AvatarGrenadeStateMessage]
}

View file

@ -681,6 +681,27 @@ class GamePacketTest extends Specification {
}
}
"AvatarGrenadeStateMessage" should {
val string = hex"A9 DA11 01"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case AvatarGrenadeStateMessage(player_guid, state) =>
player_guid mustEqual PlanetSideGUID(4570)
state mustEqual 1
case default =>
ko
}
}
"encode" in {
val msg = AvatarGrenadeStateMessage(PlanetSideGUID(4570), 1)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}
"BroadcastWarpgateUpdateMessage" should {
val string = hex"D9 0D 00 01 00 20"

View file

@ -274,6 +274,9 @@ class WorldSessionActor extends Actor with MDCContextAware {
case msg @ AvatarFirstTimeEventMessage(avatar_guid, object_guid, unk1, event_name) =>
log.info("AvatarFirstTimeEvent: " + msg)
case msg @ AvatarGrenadeStateMessage(player_guid, state) =>
log.info("AvatarGrenadeStateMessage: " + msg)
case default => log.debug(s"Unhandled GamePacket ${pkt}")
}