PSF-BotServer/common/src/main/scala/psforever/net/GamePacketOpcode.scala

43 lines
1.2 KiB
Scala
Raw Normal View History

2016-03-04 15:14:50 -05:00
// Copyright (c) 2016 PSForever.net to present
2016-02-05 03:19:13 -05:00
package psforever.net
import scodec.{Err, DecodeResult, Attempt, Codec}
import scodec.bits.BitVector
import scodec.codecs._
object GamePacketOpcode extends Enumeration {
type Type = Value
val
// Opcodes should have a marker every 10 (decimal)
2016-02-05 03:19:13 -05:00
// OPCODE 0
Unknown0,
LoginMessage,
LoginRespMessage,
Unknown3,
ConnectToWorldMessage,
VNLWorldStatusMessage,
2016-02-05 03:19:13 -05:00
UnknownMessage6,
UnknownMessage7,
PlayerStateMessage,
UnknownMessage9,
// OPCODE 10
HitHint,
DamageMessage,
DestroyMessage,
ReloadMessage,
MountVehicleMsg,
DismountVehicleMsg
= Value
def getPacketDecoder(opcode : GamePacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideGamePacket]] = opcode match {
case LoginMessage => psforever.net.LoginMessage.decode
case LoginRespMessage => psforever.net.LoginRespMessage.decode
case VNLWorldStatusMessage => psforever.net.VNLWorldStatusMessage.decode
2016-02-05 03:19:13 -05:00
case default => (a : BitVector) => Attempt.failure(Err(s"Could not find a marshaller for game packet ${opcode}"))
}
implicit val codec: Codec[this.Value] = PacketHelpers.createEnumerationCodec(this, uint8L)
2016-02-05 03:19:13 -05:00
}