mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-02-25 01:23:36 +00:00
* imported WeatherMessage packet and tests * trusting the debug information, converting from Long to Float (Vector3) * field identification for storms * copyright corrections
104 lines
4 KiB
Scala
104 lines
4 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package game
|
|
|
|
import org.specs2.mutable._
|
|
import net.psforever.packet._
|
|
import net.psforever.packet.game.{WeatherMessage, CloudInfo, StormInfo}
|
|
import net.psforever.types.Vector3
|
|
import scodec.bits._
|
|
|
|
class WeatherMessageTest extends Specification {
|
|
val string = hex"9501000000004A0807C0D65B8FBF2427663F178608BE0B000000006CE13E0C390E3F64445CB7BF3E0C2FF23DA46264A3193FBA522E3F597D9A96093F95B99E3D0800096FE53E6CD6523F39198EAF683F9BA0363D01009C35503F9E5F3E3F3C304E46F23EF9668E3E6B56C8277F3FB084F33EB6C10291423FB17F663F00008C077F3E3135D03E320A"
|
|
|
|
"decode" in {
|
|
PacketCoding.DecodePacket(string).require match {
|
|
case WeatherMessage(clouds, storms) =>
|
|
clouds.size mustEqual 1
|
|
clouds.head.id mustEqual 0
|
|
clouds.head.unk1.x mustEqual -2.109881f
|
|
clouds.head.unk1.y mustEqual -1.1199901f
|
|
clouds.head.unk2.x mustEqual 0.89903474f
|
|
clouds.head.unk2.y mustEqual -0.13332401f
|
|
|
|
storms.size mustEqual 11
|
|
//0
|
|
storms.head.loc.x mustEqual 0.4402771f
|
|
storms.head.loc.y mustEqual 0.55555797f
|
|
storms.head.intensity mustEqual 100
|
|
storms.head.radius mustEqual 68
|
|
//1
|
|
storms(1).loc.x mustEqual 0.3744458f
|
|
storms(1).loc.y mustEqual 0.1182538f
|
|
storms(1).intensity mustEqual 164
|
|
storms(1).radius mustEqual 98
|
|
//2
|
|
storms(2).loc.x mustEqual 0.6001494f
|
|
storms(2).loc.y mustEqual 0.6809498f
|
|
storms(2).intensity mustEqual 89
|
|
storms(2).radius mustEqual 125
|
|
//3
|
|
storms(3).loc.x mustEqual 0.53745425f
|
|
storms(3).loc.y mustEqual 0.07750241f
|
|
storms(3).intensity mustEqual 8
|
|
storms(3).radius mustEqual 0
|
|
//4
|
|
storms(4).loc.x mustEqual 0.44811276f
|
|
storms(4).loc.y mustEqual 0.8235843f
|
|
storms(4).intensity mustEqual 57
|
|
storms(4).radius mustEqual 25
|
|
//5
|
|
storms(5).loc.x mustEqual 0.90892875f
|
|
storms(5).loc.y mustEqual 0.04458676f
|
|
storms(5).intensity mustEqual 1
|
|
storms(5).radius mustEqual 0
|
|
//6
|
|
storms(6).loc.x mustEqual 0.813318f
|
|
storms(6).loc.y mustEqual 0.7436465f
|
|
storms(6).intensity mustEqual 60
|
|
storms(6).radius mustEqual 48
|
|
//7
|
|
storms(7).loc.x mustEqual 0.47319263f
|
|
storms(7).loc.y mustEqual 0.27812937f
|
|
storms(7).intensity mustEqual 107
|
|
storms(7).radius mustEqual 86
|
|
//8
|
|
storms(8).loc.x mustEqual 0.99670076f
|
|
storms(8).loc.y mustEqual 0.4756217f
|
|
storms(8).intensity mustEqual 182
|
|
storms(8).radius mustEqual 193
|
|
//9
|
|
storms(9).loc.x mustEqual 0.76002514f
|
|
storms(9).loc.y mustEqual 0.9003859f
|
|
storms(9).intensity mustEqual 0
|
|
storms(9).radius mustEqual 0
|
|
//10
|
|
storms(10).loc.x mustEqual 0.24905223f
|
|
storms(10).loc.y mustEqual 0.40665582f
|
|
storms(10).intensity mustEqual 50
|
|
storms(10).radius mustEqual 10
|
|
case _ =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"encode" in {
|
|
val msg = WeatherMessage(
|
|
CloudInfo(0, Vector3(-2.109881f, -1.1199901f, 0.0f), Vector3(0.89903474f, -0.13332401f, 0.0f)) ::
|
|
Nil,
|
|
StormInfo(Vector3(0.4402771f, 0.55555797f, 0.0f), 100, 68) ::
|
|
StormInfo(Vector3(0.3744458f, 0.1182538f, 0.0f), 164, 98) ::
|
|
StormInfo(Vector3(0.6001494f, 0.6809498f, 0.0f), 89, 125) ::
|
|
StormInfo(Vector3(0.53745425f, 0.07750241f, 0.0f), 8, 0) ::
|
|
StormInfo(Vector3(0.44811276f, 0.8235843f, 0.0f), 57, 25) ::
|
|
StormInfo(Vector3(0.90892875f, 0.04458676f, 0.0f),1 ,0) ::
|
|
StormInfo(Vector3(0.813318f, 0.7436465f, 0.0f), 60, 48) ::
|
|
StormInfo(Vector3(0.47319263f, 0.27812937f, 0.0f), 107, 86) ::
|
|
StormInfo(Vector3(0.99670076f, 0.4756217f, 0.0f), 182, 193) ::
|
|
StormInfo(Vector3(0.76002514f, 0.9003859f, 0.0f), 0, 0) ::
|
|
StormInfo(Vector3(0.24905223f, 0.40665582f, 0.0f), 50, 10) ::
|
|
Nil
|
|
)
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
|
pkt mustEqual string
|
|
}
|
|
}
|