mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-02-27 18:43:39 +00:00
* functions for certifcation ui updates (that don't work) * initialization of combat engineering deployables ui on load and certification change * representation classes for ACE and FDU; ability to pull ACE and FDU from equipment terminals * ammo change functionality and fire mode change functionality for ConstructionItems refactored from Tool operations and supported properly (switch between deployable options) * zone-specific structure for keeping track of deployables; abaility to dismiss deployables from the map screen (previous functionality); local client creation of explosive-type deployables * refactored MannedTurret into FacilityTurret and lesser traits to be used in the deployable spitfires and the OMFT's; all ACE deployables are available for placement; partial management of the construction items after the deployable is placed; boomers create boomer triggers * Avatar-specific storage for deployables and for updating UI elements * refactored quite a bit of code in WSA for the benefit of deployable management; refinements to deployable creation; server messages about deployable quantities; corrected the FDU encoding pattern; lots of work dedicated just to synchronizing BoomerTrigger objects * added RemoverActor for deployables and redistributed deconstruction functionality away from WSA to new DeployableRemover; added events to facilitate activities not inheritable with this model * refactored and distributed Deployables classes; copious amounts of testing and document-writing * boomers now explode from trigger; support for deployables being destroyed by weapon discharge, including individual health, soure identification, and damage model; shuffled deployable classes to build different hierarchy * sensor_shield was skipped by accident * identified stray object in Hanish, Ishundar, and added Irkalla, Ishundar's capture console; fixed issue with Warp command and 'Irkalla'; modified building amenity setup and setup testing in Zone; players load and die properly when seated in an omft; reserve ammunition in omft properly registered * added local service channel, capture consoles, fixed tests as much as posible * fixed LocalService tests by booting the ServiceManager; added avatar and local tests * a simple attempt to refactor Actor messages in a way that is acceptable to Travis CI * making the explosive deployables vanish upon explosion; sensor health bars are now supported
48 lines
1.8 KiB
Scala
48 lines
1.8 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package game.objectcreate
|
|
|
|
import net.psforever.packet.PacketCoding
|
|
import net.psforever.packet.game.{ObjectCreateMessage, PlanetSideGUID}
|
|
import net.psforever.packet.game.objectcreate._
|
|
import net.psforever.types.{PlanetSideEmpire, Vector3}
|
|
import org.specs2.mutable._
|
|
import scodec.bits._
|
|
|
|
class SmallDeployableDataTest extends Specification {
|
|
val string_boomer = hex"17 A5000000 CA0000F1630938D5A8F1400003F0031100"
|
|
|
|
"SmallDeployableData" should {
|
|
"decode (boomer)" in {
|
|
PacketCoding.DecodePacket(string_boomer).require match {
|
|
case ObjectCreateMessage(len, cls, guid, parent, data) =>
|
|
len mustEqual 165
|
|
cls mustEqual ObjectClass.boomer
|
|
guid mustEqual PlanetSideGUID(3840)
|
|
parent.isDefined mustEqual false
|
|
data.isDefined mustEqual true
|
|
data.get.isInstanceOf[SmallDeployableData] mustEqual true
|
|
val boomer = data.get.asInstanceOf[SmallDeployableData]
|
|
boomer.pos.coord.x mustEqual 4704.172f
|
|
boomer.pos.coord.y mustEqual 5546.4375f
|
|
boomer.pos.coord.z mustEqual 82.234375f
|
|
boomer.pos.orient.x mustEqual 0f
|
|
boomer.pos.orient.y mustEqual 0f
|
|
boomer.pos.orient.z mustEqual 272.8125f
|
|
boomer.unk1 mustEqual 0
|
|
boomer.owner_guid mustEqual PlanetSideGUID(8290)
|
|
case _ =>
|
|
ko
|
|
}
|
|
}
|
|
|
|
"encode (boomer)" in {
|
|
val obj = SmallDeployableData(
|
|
PlacementData(Vector3(4704.172f, 5546.4375f, 82.234375f), Vector3.z(272.8125f)),
|
|
PlanetSideEmpire.TR, false, false, 0, false, false, PlanetSideGUID(8290)
|
|
)
|
|
val msg = ObjectCreateMessage(ObjectClass.boomer, PlanetSideGUID(3840), obj)
|
|
val pkt = PacketCoding.EncodePacket(msg).require.toByteVector
|
|
pkt mustEqual string_boomer
|
|
}
|
|
}
|
|
}
|