mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-02-12 19:31:07 +00:00
initial MailMessage packet work and testing
This commit is contained in:
parent
68473dda45
commit
053e95d892
3 changed files with 66 additions and 1 deletions
|
|
@ -605,7 +605,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
|
||||
// OPCODES 0xf0-f3
|
||||
case 0xf0 => noDecoder(QueueTimedHelpMessage)
|
||||
case 0xf1 => noDecoder(MailMessage)
|
||||
case 0xf1 => game.MailMessage.decode
|
||||
case 0xf2 => noDecoder(GameVarUpdate)
|
||||
case 0xf3 => noDecoder(ClientCheatedMessage)
|
||||
case default => noDecoder(opcode)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.packet.game
|
||||
|
||||
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
|
||||
import scodec.Codec
|
||||
import scodec.codecs._
|
||||
|
||||
/**
|
||||
* Dispatched from the server, sending a "priority message" to the given client's avatar.
|
||||
* The messaging inbox is generally accessible through the use of `alt`+`i`.
|
||||
* It is also made accessible through use of an icon in the lower right corner when there is an outstanding message.<br>
|
||||
* <br>
|
||||
* Exploration:<br>
|
||||
* How does the PlanetSide Classic mail system work?
|
||||
* At the moment, it only seems possible to receive and read mail from the server.
|
||||
* @param sender the name of the player who sent the mail
|
||||
* @param subject the subject
|
||||
* @param message the message
|
||||
*/
|
||||
final case class MailMessage(sender : String,
|
||||
subject : String,
|
||||
message : String
|
||||
) extends PlanetSideGamePacket {
|
||||
type Packet = MailMessage
|
||||
def opcode = GamePacketOpcode.MailMessage
|
||||
def encode = MailMessage.encode(this)
|
||||
}
|
||||
|
||||
object MailMessage extends Marshallable[MailMessage] {
|
||||
implicit val codec : Codec[MailMessage] = (
|
||||
("sender" | PacketHelpers.encodedString) ::
|
||||
("subject" | PacketHelpers.encodedString) ::
|
||||
("message" | PacketHelpers.encodedString)
|
||||
).as[MailMessage]
|
||||
}
|
||||
30
common/src/test/scala/game/MailMessageTest.scala
Normal file
30
common/src/test/scala/game/MailMessageTest.scala
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package game
|
||||
|
||||
import org.specs2.mutable._
|
||||
import net.psforever.packet._
|
||||
import net.psforever.packet.game._
|
||||
import scodec.bits._
|
||||
|
||||
class MailMessageTest extends Specification {
|
||||
//we've never received this packet before so this whole test is faked
|
||||
val string = hex"F1 86466174654A489250726 96F72697479204D61696C2054657374 8E48656C6C6F204175726178697321"
|
||||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case MailMessage(sender, subject, msg) =>
|
||||
sender mustEqual "FateJH"
|
||||
subject mustEqual "Priority Mail Test"
|
||||
msg mustEqual "Hello Auraxis!"
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode" in {
|
||||
val msg = MailMessage("FateJH", "Priority Mail Test", "Hello Auraxis!")
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
||||
pkt mustEqual string
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue