Packet: ConnectToWorldRequestMessage

This commit is contained in:
Chord 2016-05-14 15:38:34 -04:00
parent 034dadc96c
commit b210df904a
3 changed files with 57 additions and 1 deletions

View file

@ -32,7 +32,7 @@ object GamePacketOpcode extends Enumeration {
= Value
def getPacketDecoder(opcode : GamePacketOpcode.Type) : (BitVector) => Attempt[DecodeResult[PlanetSideGamePacket]] = opcode match {
//case ConnectToWorldRequestMessage => game.ConnectToWorldRequestMessage.decode
case ConnectToWorldRequestMessage => game.ConnectToWorldRequestMessage.decode
case ConnectToWorldMessage => game.ConnectToWorldMessage.decode
case LoginMessage => game.LoginMessage.decode
case LoginRespMessage => game.LoginRespMessage.decode

View file

@ -0,0 +1,31 @@
// 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._
// NOTE: this packet has a ton of bytes left over at the end and is usually all zeros
// except for the server name and a 0x80 near the end
final case class ConnectToWorldRequestMessage(server : String,
majorVersion : Long,
minorVersion : Long,
revision : Long,
buildDate : String,
unknown : Int) extends PlanetSideGamePacket {
type Packet = ConnectToWorldRequestMessage
def opcode = GamePacketOpcode.ConnectToWorldRequestMessage
def encode = ConnectToWorldRequestMessage.encode(this)
}
object ConnectToWorldRequestMessage extends Marshallable[ConnectToWorldRequestMessage] {
implicit val codec : Codec[ConnectToWorldRequestMessage] = (
("server_name" | PacketHelpers.encodedString) ::
("unknown" | ignore(32*8)) ::
("major_version" | uint32L) ::
("minor_version" | uint32L) ::
("revision" | uint32L) ::
("build_date" | PacketHelpers.encodedString) ::
("unknown_short" | uint16L)
).as[ConnectToWorldRequestMessage]
}