mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-20 02:24:45 +00:00
FireHintMessage
This commit is contained in:
parent
461a4f9507
commit
59c7419565
|
|
@ -510,7 +510,7 @@ object GamePacketOpcode extends Enumeration {
|
|||
|
||||
// OPCODES 0xa0-af
|
||||
case 0xa0 => game.BuildingInfoUpdateMessage.decode
|
||||
case 0xa1 => noDecoder(FireHintMessage)
|
||||
case 0xa1 => game.FireHintMessage.decode
|
||||
case 0xa2 => noDecoder(UplinkRequest)
|
||||
case 0xa3 => noDecoder(UplinkResponse)
|
||||
case 0xa4 => game.WarpgateRequest.decode
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package net.psforever.packet.game
|
||||
|
||||
import net.psforever.packet.{GamePacketOpcode, Marshallable, PacketHelpers, PlanetSideGamePacket}
|
||||
import net.psforever.types.Vector3
|
||||
import scodec.Codec
|
||||
import scodec.codecs._
|
||||
|
||||
/**
|
||||
* not sure for u1 / u2 / u3, maybe need a real brain ...
|
||||
* @param weapon_guid na
|
||||
* @param pos na; pos of what ?!
|
||||
* @param u1 na
|
||||
* @param u2 na
|
||||
* @param u3 na
|
||||
* @param u4 na
|
||||
* @param u5 na; vel of what ?!
|
||||
*/
|
||||
|
||||
final case class FireHintMessage(weapon_guid : PlanetSideGUID,
|
||||
pos : Vector3,
|
||||
u1 : Int,
|
||||
u2 : Int,
|
||||
u3 : Int,
|
||||
u4 : Int,
|
||||
u5 : Option[Vector3] = None)
|
||||
extends PlanetSideGamePacket {
|
||||
type Packet = FireHintMessage
|
||||
def opcode = GamePacketOpcode.FireHintMessage
|
||||
def encode = FireHintMessage.encode(this)
|
||||
}
|
||||
|
||||
object FireHintMessage extends Marshallable[FireHintMessage] {
|
||||
|
||||
implicit val codec : Codec[FireHintMessage] = (
|
||||
("weapon_guid" | PlanetSideGUID.codec) ::
|
||||
("pos" | Vector3.codec_pos) ::
|
||||
("u1" | uint16L) ::
|
||||
("u2" | uint16L) ::
|
||||
("u3" | uint16L) ::
|
||||
("u4" | uintL(3)) ::
|
||||
optional(bool, "u5" | Vector3.codec_vel)
|
||||
).as[FireHintMessage]
|
||||
}
|
||||
55
common/src/test/scala/game/FireHintMessageTest.scala
Normal file
55
common/src/test/scala/game/FireHintMessageTest.scala
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
// Copyright (c) 2017 PSForever
|
||||
package game
|
||||
|
||||
import org.specs2.mutable._
|
||||
import net.psforever.packet._
|
||||
import net.psforever.packet.game._
|
||||
import net.psforever.types.Vector3
|
||||
import scodec.bits._
|
||||
|
||||
class FireHintMessageTest extends Specification {
|
||||
val string = hex"a1 0117 23cd63f1d7480d 000077ff9d1d00"
|
||||
val string2 = hex"a1 080e 65af5705074411 0000cffee0fc7b08899f5580"
|
||||
|
||||
"decode" in {
|
||||
PacketCoding.DecodePacket(string).require match {
|
||||
case FireHintMessage(guid1, pos, guid2, guid3, guid4, unk1,u2) =>
|
||||
guid1 mustEqual PlanetSideGUID(5889)
|
||||
pos mustEqual Vector3(3482.2734f,3642.4922f,53.125f)
|
||||
guid2 mustEqual 0
|
||||
guid3 mustEqual 65399
|
||||
guid4 mustEqual 7581
|
||||
unk1 mustEqual 0
|
||||
u2 mustEqual None
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
"decode string2" in {
|
||||
PacketCoding.DecodePacket(string2).require match {
|
||||
case FireHintMessage(guid1, pos, guid2, guid3, guid4, unk1,u2) =>
|
||||
guid1 mustEqual PlanetSideGUID(3592)
|
||||
pos mustEqual Vector3(2910.789f,3744.875f,69.0625f)
|
||||
guid2 mustEqual 0
|
||||
guid3 mustEqual 65231
|
||||
guid4 mustEqual 64736
|
||||
unk1 mustEqual 3
|
||||
u2 mustEqual Some(Vector3(21.5f,-6.8125f,2.65625f))
|
||||
case _ =>
|
||||
ko
|
||||
}
|
||||
}
|
||||
|
||||
"encode" in {
|
||||
val msg = FireHintMessage(PlanetSideGUID(5889), Vector3(3482.2734f,3642.4922f,53.125f), 0, 65399, 7581, 0)
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
||||
pkt mustEqual string
|
||||
}
|
||||
"encode string2" in {
|
||||
val msg = FireHintMessage(PlanetSideGUID(3592), Vector3(2910.789f,3744.875f,69.0625f), 0, 65231, 64736, 3, Some(Vector3(21.5f,-6.8125f,2.65625f)))
|
||||
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
||||
|
||||
pkt mustEqual string2
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue