modifying packet for previously unhandled fields (all)

This commit is contained in:
FateJH 2017-01-19 13:39:54 -05:00
parent c392b1c500
commit aee720ae84
3 changed files with 15 additions and 7 deletions

View file

@ -20,6 +20,9 @@ final case class Additional1(unk1 : String,
unk2 : Int,
unk3 : Long)
final case class Additional2(unk1 : Int,
unk2 : Long)
final case class Additional3(unk1 : Boolean,
unk2 : Int)
@ -40,7 +43,7 @@ final case class BuildingInfoUpdateMessage(continent_guid : PlanetSideGUID,
force_dome_active : Boolean,
lattice_benefit : Int,
unk3 : Int,
unk4 : Int,
unk4 : List[Additional2],
unk5 : Long,
unk6 : Boolean,
unk7 : Int,
@ -60,6 +63,11 @@ object BuildingInfoUpdateMessage extends Marshallable[BuildingInfoUpdateMessage]
("unk3" | uint32L)
).as[Additional1]
private val additional2_codec : Codec[Additional2] = (
("unk1" | uint4L) ::
("unk2" | uint32L)
).as[Additional2]
private val additional3_codec : Codec[Additional3] = (
("unk1" | bool) ::
("unk2" | uint2L)
@ -80,8 +88,7 @@ object BuildingInfoUpdateMessage extends Marshallable[BuildingInfoUpdateMessage]
("force_dome_active" | bool) ::
("lattice_benefit" | uintL(5)) :: //5 possible benefits, bitwise combination. (MSB)5:Tech 4:Inter 3:Bio 2:Drop 1:Amp(LSB)
("unk3" | uintL(10)) :: //Module related. 0x3FF gives all modules with no timer. Unclear how this works.
("unk4" | uint4L) ::
//TODO: additional fields if unk4 > 0
("unk4" | listOfN(uint4L, additional2_codec)) ::
("unk5" | uint32L) ::
("unk6" | bool) ::
(("unk7" | uint4L) >>:~ { unk7 =>

View file

@ -1878,7 +1878,7 @@ class GamePacketTest extends Specification {
force_dome_active : Boolean,
lattice_benefit : Int,
unk3 : Int,
unk4 : Int,
unk4 : List[Additional2],
unk5 : Long,
unk6 : Boolean,
unk7 : Int,
@ -1899,7 +1899,8 @@ class GamePacketTest extends Specification {
force_dome_active mustEqual false
lattice_benefit mustEqual 28
unk3 mustEqual 0
unk4 mustEqual 0
unk4.size mustEqual 0
unk4.isEmpty mustEqual true
unk5 mustEqual 0
unk6 mustEqual false
unk7 mustEqual 8
@ -1926,7 +1927,7 @@ class GamePacketTest extends Specification {
false,
28,
0,
0,
Nil,
0,
false,
8,

View file

@ -206,7 +206,7 @@ class WorldSessionActor extends Actor with MDCContextAware {
true, //Force dome active
16, //Tech plant lattice benefit
0,
0, //!! Field > 0 will cause malformed packet. See class def.
Nil, //!! Field > 0 will cause malformed packet. See class def.
0,
false,
8, //!! Field != 8 will cause malformed packet. See class def.