Packet: RepairMessage and tests (#118)

This commit is contained in:
Fate-JH 2017-03-10 21:41:19 -05:00 committed by pschord
parent 06004b0af0
commit 039f0e55a0
3 changed files with 56 additions and 1 deletions

View file

@ -409,7 +409,7 @@ object GamePacketOpcode extends Enumeration {
case 0x4a => noDecoder(SpawnRequestMessage)
case 0x4b => noDecoder(DeployRequestMessage)
case 0x4c => noDecoder(UnknownMessage76)
case 0x4d => noDecoder(RepairMessage)
case 0x4d => game.RepairMessage.decode
case 0x4e => noDecoder(ServerVehicleOverrideMsg)
case 0x4f => noDecoder(LashMessage)

View file

@ -0,0 +1,27 @@
// Copyright (c) 2017 PSForever
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
/**
* Dispatched to the client to report the amount of repair that is performed upon a target item.
* The item could be a player or a vehicle or a stationary game object, e.g., a terminal.
* @param item_guid an item
* @param repair_value how much the item has been repaired for
*/
final case class RepairMessage(item_guid : PlanetSideGUID,
repair_value : Long)
extends PlanetSideGamePacket {
type Packet = RepairMessage
def opcode = GamePacketOpcode.RepairMessage
def encode = RepairMessage.encode(this)
}
object RepairMessage extends Marshallable[RepairMessage] {
implicit val codec : Codec[RepairMessage] = (
("item_guid" | PlanetSideGUID.codec) ::
("repair_value" | uint32L)
).as[RepairMessage]
}

View file

@ -0,0 +1,28 @@
// Copyright (c) 2017 PSForever
package game
import org.specs2.mutable._
import net.psforever.packet._
import net.psforever.packet.game._
import scodec.bits._
class RepairMessageTest extends Specification {
val string = hex"4D 2709 5C000000"
"decode" in {
PacketCoding.DecodePacket(string).require match {
case RepairMessage(item_guid, repair_value) =>
item_guid mustEqual PlanetSideGUID(2343)
repair_value mustEqual 92
case _ =>
ko
}
}
"encode" in {
val msg = RepairMessage(PlanetSideGUID(2343), 92)
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
pkt mustEqual string
}
}