test repairs

This commit is contained in:
FateJH 2020-08-25 15:24:26 -04:00
parent e27e827552
commit bb3c0f5d91
5 changed files with 51 additions and 24 deletions

View file

@ -5,7 +5,7 @@ import akka.actor.Props
import akka.routing.RandomPool import akka.routing.RandomPool
import actor.base.ActorTest import actor.base.ActorTest
import net.psforever.objects._ import net.psforever.objects._
import net.psforever.objects.guid.{GUIDTask, TaskResolver} import net.psforever.objects.guid.{NumberPoolHub, TaskResolver}
import net.psforever.objects.zones.{Zone, ZoneMap} import net.psforever.objects.zones.{Zone, ZoneMap}
import net.psforever.packet.game.objectcreate.{DroppedItemData, ObjectClass, ObjectCreateMessageParent, PlacementData} import net.psforever.packet.game.objectcreate.{DroppedItemData, ObjectClass, ObjectCreateMessageParent, PlacementData}
import net.psforever.packet.game.{ObjectCreateMessage, PlayerStateMessageUpstream} import net.psforever.packet.game.{ObjectCreateMessage, PlayerStateMessageUpstream}
@ -17,6 +17,7 @@ import scala.concurrent.duration._
import akka.actor.typed.scaladsl.adapter._ import akka.actor.typed.scaladsl.adapter._
import net.psforever.actors.zone.ZoneActor import net.psforever.actors.zone.ZoneActor
import net.psforever.objects.avatar.Avatar import net.psforever.objects.avatar.Avatar
import net.psforever.objects.guid.source.LimitedNumberSource
class AvatarService1Test extends ActorTest { class AvatarService1Test extends ActorTest {
"AvatarService" should { "AvatarService" should {
@ -511,10 +512,13 @@ class AvatarReleaseTest extends ActorTest {
val zone = new Zone("test", new ZoneMap("test-map"), 0) { val zone = new Zone("test", new ZoneMap("test-map"), 0) {
override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) }
} }
val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100))
zone.GUID(guid1)
val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service")
val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver")
zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone")
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1))
guid1.register(obj)
guid1.register(obj.Slot(5).Equipment.get)
obj.Continent = "test" obj.Continent = "test"
obj.Release obj.Release
@ -523,7 +527,6 @@ class AvatarReleaseTest extends ActorTest {
expectNoMessage(100 milliseconds) //spacer expectNoMessage(100 milliseconds) //spacer
service ! Service.Join("test") service ! Service.Join("test")
taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID)
assert(zone.Corpses.isEmpty) assert(zone.Corpses.isEmpty)
zone.Population ! Zone.Corpse.Add(obj) zone.Population ! Zone.Corpse.Add(obj)
expectNoMessage(200 milliseconds) //spacer expectNoMessage(200 milliseconds) //spacer
@ -561,10 +564,13 @@ class AvatarReleaseEarly1Test extends ActorTest {
val zone = new Zone("test", new ZoneMap("test-map"), 0) { val zone = new Zone("test", new ZoneMap("test-map"), 0) {
override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) }
} }
val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100))
zone.GUID(guid1)
val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service")
val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver")
zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone")
val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1))
guid1.register(obj)
guid1.register(obj.Slot(5).Equipment.get)
obj.Continent = "test" obj.Continent = "test"
obj.Release obj.Release
@ -573,7 +579,6 @@ class AvatarReleaseEarly1Test extends ActorTest {
expectNoMessage(100 milliseconds) //spacer expectNoMessage(100 milliseconds) //spacer
service ! Service.Join("test") service ! Service.Join("test")
taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID)
assert(zone.Corpses.isEmpty) assert(zone.Corpses.isEmpty)
zone.Population ! Zone.Corpse.Add(obj) zone.Population ! Zone.Corpse.Add(obj)
expectNoMessage(200 milliseconds) //spacer expectNoMessage(200 milliseconds) //spacer
@ -612,14 +617,19 @@ class AvatarReleaseEarly2Test extends ActorTest {
val zone = new Zone("test", new ZoneMap("test-map"), 0) { val zone = new Zone("test", new ZoneMap("test-map"), 0) {
override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) } override def SetupNumberPools() = { AddPool("dynamic", 1 to 10) }
} }
val guid1: NumberPoolHub = new NumberPoolHub(new LimitedNumberSource(100))
zone.GUID(guid1)
val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service") val service = system.actorOf(Props(classOf[AvatarService], zone), "release-test-service")
val taskResolver = system.actorOf(Props[TaskResolver](), "release-test-resolver")
zone.actor = system.spawn(ZoneActor(zone), "release-test-zone") zone.actor = system.spawn(ZoneActor(zone), "release-test-zone")
val objAlt = val objAlt =
Player( Player(
Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1) Avatar(0, "TestCharacter2", PlanetSideEmpire.NC, CharacterGender.Male, 1, CharacterVoice.Voice1)
) //necessary clutter ) //necessary clutter
val obj = Player(Avatar(0, "TestCharacter1", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1)) objAlt.GUID = PlanetSideGUID(3)
objAlt.Slot(5).Equipment.get.GUID = PlanetSideGUID(4)
val obj = Player(Avatar(0, "TestCharacter", PlanetSideEmpire.VS, CharacterGender.Female, 1, CharacterVoice.Voice1))
guid1.register(obj)
guid1.register(obj.Slot(5).Equipment.get)
obj.Continent = "test" obj.Continent = "test"
obj.Release obj.Release
@ -628,7 +638,6 @@ class AvatarReleaseEarly2Test extends ActorTest {
expectNoMessage(100 milliseconds) //spacer expectNoMessage(100 milliseconds) //spacer
service ! Service.Join("test") service ! Service.Join("test")
taskResolver ! GUIDTask.RegisterObjectTask(obj)(zone.GUID)
assert(zone.Corpses.isEmpty) assert(zone.Corpses.isEmpty)
zone.Population ! Zone.Corpse.Add(obj) zone.Population ! Zone.Corpse.Add(obj)
expectNoMessage(200 milliseconds) //spacer expectNoMessage(200 milliseconds) //spacer

View file

@ -101,7 +101,7 @@ object DamageModifiers {
val distance = Vector3.Distance(data.hit_pos, data.target.Position) val distance = Vector3.Distance(data.hit_pos, data.target.Position)
val radius = profile.DamageRadius val radius = profile.DamageRadius
if (distance <= radius) { if (distance <= radius) {
damage * (1f - (profile.DamageAtEdge * distance / radius)).toInt damage - (damage * profile.DamageAtEdge * distance / radius).toInt
} else { } else {
0 0
} }

View file

@ -451,7 +451,7 @@ class Zone(val id: String, val map: ZoneMap, zoneNumber: Int) {
* `false`, if the new pool can not be created because the system has already been started * `false`, if the new pool can not be created because the system has already been started
*/ */
def AddPool(name: String, pool: Seq[Int]): Boolean = { def AddPool(name: String, pool: Seq[Int]): Boolean = {
if (accessor == Default.Actor) { if (accessor == Default.Actor || accessor == null) {
guid.AddPool(name, pool.toList) guid.AddPool(name, pool.toList)
true true
} else { } else {

View file

@ -64,14 +64,7 @@ class DamageCalculationsTests extends Specification {
} }
"degrade over distance damage modifier (no degrade)" in { "degrade over distance damage modifier (no degrade)" in {
val resprojectile2 = ResolvedProjectile( DamageModifiers.DistanceDegrade.Calculate(100, resprojectile) == 100 mustEqual true
ProjectileResolution.Splash,
projectile,
SourceEntry(target),
target.DamageModel,
Vector3(10, 0, 0)
)
DamageModifiers.DistanceDegrade.Calculate(100, resprojectile2) == 100 mustEqual true
} }
"degrade over distance damage modifier (some degrade)" in { "degrade over distance damage modifier (some degrade)" in {
@ -109,7 +102,14 @@ class DamageCalculationsTests extends Specification {
} }
"degrade at radial distance damage modifier (some degrade)" in { "degrade at radial distance damage modifier (some degrade)" in {
val damage = DamageModifiers.RadialDegrade.Calculate(100, resprojectile) val resprojectile2 = ResolvedProjectile(
ProjectileResolution.Splash,
projectile,
SourceEntry(target),
target.DamageModel,
Vector3(12, 0, 0)
)
val damage = DamageModifiers.RadialDegrade.Calculate(100, resprojectile2)
damage < 100 && damage > 0 mustEqual true damage < 100 && damage > 0 mustEqual true
} }
@ -119,7 +119,7 @@ class DamageCalculationsTests extends Specification {
projectile, projectile,
SourceEntry(target), SourceEntry(target),
target.DamageModel, target.DamageModel,
Vector3(1000, 0, 0) Vector3(100, 0, 0)
) )
DamageModifiers.RadialDegrade.Calculate(100, resprojectile2) == 0 mustEqual true DamageModifiers.RadialDegrade.Calculate(100, resprojectile2) == 0 mustEqual true
} }

View file

@ -110,7 +110,8 @@ class ZoneTest extends Specification {
zone.AddPool("pool2", (51 to 75).toList) zone.AddPool("pool2", (51 to 75).toList)
val obj = new TestObject() val obj = new TestObject()
guid1.register(obj, "pool2").isSuccess mustEqual true val registration = guid1.register(obj, "pool2")
registration.isSuccess mustEqual true
guid1.WhichPool(obj).contains("pool2") mustEqual true guid1.WhichPool(obj).contains("pool2") mustEqual true
zone.GUID(new NumberPoolHub(new LimitedNumberSource(150))) mustEqual false zone.GUID(new NumberPoolHub(new LimitedNumberSource(150))) mustEqual false
@ -214,13 +215,15 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
assert(zone.Players.isEmpty) assert(zone.Players.isEmpty)
assert(zone.LivePlayers.isEmpty) assert(zone.LivePlayers.isEmpty)
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) zone.Population ! Zone.Population.Spawn(avatar, player, null)
expectNoMessage(Duration.create(200, "ms")) expectNoMessage(Duration.create(200, "ms"))
assert(zone.Players.size == 1) assert(zone.Players.size == 1)
assert(zone.Players.head == avatar) assert(zone.Players.head == avatar)
@ -232,10 +235,12 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(1, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(1, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
receiveOne(Duration.create(200, "ms")) //consume receiveOne(Duration.create(200, "ms")) //consume
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) zone.Population ! Zone.Population.Spawn(avatar, player, null)
expectNoMessage(Duration.create(100, "ms")) expectNoMessage(Duration.create(100, "ms"))
assert(zone.Players.size == 1) assert(zone.Players.size == 1)
@ -251,6 +256,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
@ -271,6 +277,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
@ -318,7 +325,9 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player1 = Player(avatar) val player1 = Player(avatar)
player1.GUID = PlanetSideGUID(1)
val player2 = Player(avatar) val player2 = Player(avatar)
player2.GUID = PlanetSideGUID(2)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
@ -344,6 +353,7 @@ class ZonePopulationTest extends ActorTest {
val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} } val zone = new Zone("test", new ZoneMap(""), 0) { override def SetupNumberPools() = {} }
val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(0, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar) val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
@ -364,10 +374,12 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val avatar = Avatar(2, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5) val avatar = Avatar(2, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)
val player = Player(avatar)
player.GUID = PlanetSideGUID(1)
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
zone.Population ! Zone.Population.Join(avatar) zone.Population ! Zone.Population.Join(avatar)
zone.Population ! Zone.Population.Spawn(avatar, Player(avatar), null) zone.Population ! Zone.Population.Spawn(avatar, player, null)
expectNoMessage(Duration.create(100, "ms")) expectNoMessage(Duration.create(100, "ms"))
assert(zone.Players.size == 1) assert(zone.Players.size == 1)
@ -388,6 +400,7 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(3, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(3, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1)
player.Release player.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
@ -404,6 +417,7 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(4, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(4, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1)
player.Release player.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
@ -422,10 +436,13 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player1 = Player(Avatar(5, "Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player1 = Player(Avatar(5, "Chord1", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player1.GUID = PlanetSideGUID(1)
player1.Release player1.Release
val player2 = Player(Avatar(6, "Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player2 = Player(Avatar(6, "Chord2", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player2.GUID = PlanetSideGUID(2)
player2.Release player2.Release
val player3 = Player(Avatar(7, "Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player3 = Player(Avatar(7, "Chord3", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player3.GUID = PlanetSideGUID(3)
player3.Release player3.Release
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)
@ -450,6 +467,7 @@ class ZonePopulationTest extends ActorTest {
override def SetupNumberPools() = {} override def SetupNumberPools() = {}
} }
val player = Player(Avatar(8, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5)) val player = Player(Avatar(8, "Chord", PlanetSideEmpire.TR, CharacterGender.Male, 0, CharacterVoice.Voice5))
player.GUID = PlanetSideGUID(1)
//player.Release !!important //player.Release !!important
zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName) zone.actor = system.spawn(ZoneActor(zone), ZoneTest.TestName)
expectNoMessage(200 milliseconds) expectNoMessage(200 milliseconds)