Packet: LoadMapMessage (#61)

* Add LoadMapMessage packet

* Add LoadMapMessage test
This commit is contained in:
aphedox 2016-08-14 17:37:06 -05:00 committed by pschord
parent 83264de081
commit a37fb3214c
4 changed files with 65 additions and 2 deletions

View file

@ -376,7 +376,7 @@ object GamePacketOpcode extends Enumeration {
case UnknownMessage46 => noDecoder(opcode)
case CharacterCreateRequestMessage => game.CharacterCreateRequestMessage.decode
case CharacterRequestMessage => game.CharacterRequestMessage.decode
case LoadMapMessage => noDecoder(opcode)
case LoadMapMessage => game.LoadMapMessage.decode
// OPCODE 50
case SetCurrentAvatarMessage => game.SetCurrentAvatarMessage.decode

View file

@ -0,0 +1,38 @@
// 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._
/**
* map_name and nav_map_name should match (unless you want to be lost :))
*
* ex:
* map13 & home3 = vs sanc
* map10 & z10 = amerish
* map07 & z7 = esamir
*/
final case class LoadMapMessage(map_name : String,
nav_map_name : String, // Also determines loading screen
unk1 : Int,
unk2 : Long,
weapons_unlocked : Boolean,
checksum : Long) //?
extends PlanetSideGamePacket {
type Packet = LoadMapMessage
def opcode = GamePacketOpcode.LoadMapMessage
def encode = LoadMapMessage.encode(this)
}
object LoadMapMessage extends Marshallable[LoadMapMessage] {
implicit val codec : Codec[LoadMapMessage] = (
("map_name" | PacketHelpers.encodedString) :: // TODO: Implement encodedStringWithLimit
("nav_map_name" | PacketHelpers.encodedString) :: //TODO: Implement encodedStringWithLimit
("unk1" | uint16L) ::
("unk2" | uint32L) ::
("weapons_unlocked" | bool) ::
("checksum" | uint32L)
).as[LoadMapMessage]
}