Packet: ChangeFireModeMessage

* Add ChangeFireModeMessage packet

* Add ChangeFireModeMessage test

* Add ChangeFireModeMessage handler stub
This commit is contained in:
tfarley 2016-07-23 17:07:44 -07:00 committed by pschord
parent 7cf4d00376
commit f11b3d17c0
4 changed files with 46 additions and 1 deletions

View file

@ -403,7 +403,7 @@ object GamePacketOpcode extends Enumeration {
case ItemTransactionResultMessage => noDecoder(opcode)
// OPCODE 70
case ChangeFireModeMessage => noDecoder(opcode)
case ChangeFireModeMessage => game.ChangeFireModeMessage.decode
case ChangeAmmoMessage => noDecoder(opcode)
case TimeOfDayMessage => noDecoder(opcode)
case UnknownMessage73 => noDecoder(opcode)

View file

@ -0,0 +1,21 @@
// Copyright (c) 2016 PSForever.net to present
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
final case class ChangeFireModeMessage(item_guid : PlanetSideGUID,
fire_mode : Int)
extends PlanetSideGamePacket {
type Packet = ChangeFireModeMessage
def opcode = GamePacketOpcode.ChangeFireModeMessage
def encode = ChangeFireModeMessage.encode(this)
}
object ChangeFireModeMessage extends Marshallable[ChangeFireModeMessage] {
implicit val codec : Codec[ChangeFireModeMessage] = (
("item_guid" | PlanetSideGUID.codec) ::
("fire_mode" | uintL(3))
).as[ChangeFireModeMessage]
}

View file

@ -203,5 +203,26 @@ class GamePacketTest extends Specification {
pkt_tell mustEqual string_tell
}
}
"ChangeFireModeMessage" should {
val string = hex"46 4C0020"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case ChangeFireModeMessage(item_guid, fire_mode) =>
item_guid mustEqual PlanetSideGUID(76)
fire_mode mustEqual 1
case default =>
ko
}
}
"encode" in {
val msg = ChangeFireModeMessage(PlanetSideGUID(76), 1)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}
}
}