initial work on TargetingImplantRequest packet

This commit is contained in:
FateJH 2017-04-20 23:27:14 -04:00
parent f1dfc20cb3
commit 0629fa5eb7
2 changed files with 36 additions and 1 deletions

View file

@ -533,7 +533,7 @@ object GamePacketOpcode extends Enumeration {
case 0xb2 => game.VoiceHostInfo.decode
case 0xb3 => noDecoder(BattleplanMessage)
case 0xb4 => game.BattleExperienceMessage.decode
case 0xb5 => noDecoder(TargetingImplantRequest)
case 0xb5 => game.TargetingImplantRequest.decode
case 0xb6 => game.ZonePopulationUpdateMessage.decode
case 0xb7 => game.DisconnectMessage.decode
// 0xb8

View file

@ -0,0 +1,35 @@
// Copyright (c) 2017 PSForever
package net.psforever.packet.game
import net.psforever.packet.{GamePacketOpcode, Marshallable, PlanetSideGamePacket}
import scodec.Codec
import scodec.codecs._
import shapeless.{::, HNil}
final case class TargetRequest(target_guid : PlanetSideGUID,
unk : Boolean)
final case class TargetingImplantRequest(target_list : List[TargetRequest])
extends PlanetSideGamePacket {
type Packet = TargetingImplantRequest
def opcode = GamePacketOpcode.TargetingImplantRequest
def encode = TargetingImplantRequest.encode(this)
}
object TargetingImplantRequest extends Marshallable[TargetingImplantRequest] {
private val request_codec : Codec[TargetRequest] = (
("target_guid" | PlanetSideGUID.codec) ::
("unk" | bool)
).xmap[TargetRequest] (
{
case a :: b :: HNil =>
TargetRequest(a, b)
},
{
case TargetRequest(a, b) =>
a :: b :: HNil
}
)
implicit val codec : Codec[TargetingImplantRequest] = ("target_list" | listOfN(intL(6), request_codec)).as[TargetingImplantRequest]
}