mirror of
https://github.com/2revoemag/PSF-BotServer.git
synced 2026-01-19 18:14:44 +00:00
Added continent stubs to InterstellarCluster init list. All Maps and Zones are defined in temporary objects that may be subdivided further as they grow. Builder: Replaced trait ServerObjectBuilder[A] with class ServerObjectBuilder[A] that allows for much greater power. In ZoneMap.Init override, LocalObject invocations that were previously 'LocalBuilder(FooObjectBuilder(ObjectDefintion, Int))` have been transformed into `LocalObject(ServerObjectBuilder(Int, (Int=>Foo))` where `Foo` is the type of object to be created by the curried function `(Int)=>Foo`. The examples with Terminals and the VehicleSpawnPad should demonstrate what kind of power this syntax possesses in isolating constant (or at least initial) configuration settings. At least five files, and some files not yet written, have been rendered obsolete and have been eliminated from the sim pertaining to these created objects.
117 lines
4.3 KiB
Scala
117 lines
4.3 KiB
Scala
// Copyright (c) 2017 PSForever
|
|
package objects
|
|
|
|
import akka.actor.{Actor, Props}
|
|
import net.psforever.objects.GlobalDefinitions.order_terminal
|
|
import net.psforever.objects.guid.NumberPoolHub
|
|
import net.psforever.packet.game.PlanetSideGUID
|
|
import net.psforever.objects.serverobject.ServerObjectBuilder
|
|
import net.psforever.types.Vector3
|
|
|
|
import scala.concurrent.duration.Duration
|
|
|
|
class DoorObjectBuilderTest extends ActorTest {
|
|
import net.psforever.objects.serverobject.doors.Door
|
|
"DoorObjectBuilder" should {
|
|
"build" in {
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Door.Constructor), hub), "door")
|
|
actor ! "!"
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
assert(reply.isInstanceOf[Door])
|
|
assert(reply.asInstanceOf[Door].HasGUID)
|
|
assert(reply.asInstanceOf[Door].GUID == PlanetSideGUID(1))
|
|
assert(reply == hub(1).get)
|
|
}
|
|
}
|
|
}
|
|
|
|
class IFFLockObjectBuilderTest extends ActorTest {
|
|
import net.psforever.objects.serverobject.locks.IFFLock
|
|
"IFFLockObjectBuilder" should {
|
|
"build" in {
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, IFFLock.Constructor), hub), "lock")
|
|
actor ! "!"
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
assert(reply.isInstanceOf[IFFLock])
|
|
assert(reply.asInstanceOf[IFFLock].HasGUID)
|
|
assert(reply.asInstanceOf[IFFLock].GUID == PlanetSideGUID(1))
|
|
assert(reply == hub(1).get)
|
|
}
|
|
}
|
|
}
|
|
|
|
class ImplantTerminalMechObjectBuilderTest extends ActorTest {
|
|
import net.psforever.objects.serverobject.implantmech.ImplantTerminalMech
|
|
"IFFLockObjectBuilder" should {
|
|
"build" in {
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, ImplantTerminalMech.Constructor), hub), "mech")
|
|
actor ! "!"
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
assert(reply.isInstanceOf[ImplantTerminalMech])
|
|
assert(reply.asInstanceOf[ImplantTerminalMech].HasGUID)
|
|
assert(reply.asInstanceOf[ImplantTerminalMech].GUID == PlanetSideGUID(1))
|
|
assert(reply == hub(1).get)
|
|
}
|
|
}
|
|
}
|
|
|
|
class TerminalObjectBuilderTest extends ActorTest {
|
|
import net.psforever.objects.serverobject.terminals.Terminal
|
|
"TerminalObjectBuilder" should {
|
|
"build" in {
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1, Terminal.Constructor(order_terminal)), hub), "term")
|
|
actor ! "!"
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
assert(reply.isInstanceOf[Terminal])
|
|
assert(reply.asInstanceOf[Terminal].HasGUID)
|
|
assert(reply.asInstanceOf[Terminal].GUID == PlanetSideGUID(1))
|
|
assert(reply == hub(1).get)
|
|
}
|
|
}
|
|
}
|
|
|
|
class VehicleSpawnPadObjectBuilderTest extends ActorTest {
|
|
import net.psforever.objects.serverobject.pad.VehicleSpawnPad
|
|
"TerminalObjectBuilder" should {
|
|
"build" in {
|
|
val hub = ServerObjectBuilderTest.NumberPoolHub
|
|
val actor = system.actorOf(Props(classOf[ServerObjectBuilderTest.BuilderTestActor], ServerObjectBuilder(1,
|
|
VehicleSpawnPad.Constructor(Vector3(1.1f, 2.2f, 3.3f), Vector3(4.4f, 5.5f, 6.6f))
|
|
), hub), "pad")
|
|
actor ! "!"
|
|
|
|
val reply = receiveOne(Duration.create(1000, "ms"))
|
|
assert(reply.isInstanceOf[VehicleSpawnPad])
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].HasGUID)
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].GUID == PlanetSideGUID(1))
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].Position == Vector3(1.1f, 2.2f, 3.3f))
|
|
assert(reply.asInstanceOf[VehicleSpawnPad].Orientation == Vector3(4.4f, 5.5f, 6.6f))
|
|
assert(reply == hub(1).get)
|
|
}
|
|
}
|
|
}
|
|
|
|
object ServerObjectBuilderTest {
|
|
import net.psforever.objects.guid.source.LimitedNumberSource
|
|
def NumberPoolHub : NumberPoolHub = {
|
|
val obj = new NumberPoolHub(new LimitedNumberSource(2))
|
|
obj
|
|
}
|
|
|
|
class BuilderTestActor(builder : ServerObjectBuilder[_], hub : NumberPoolHub) extends Actor {
|
|
def receive : Receive = {
|
|
case _ =>
|
|
sender ! builder.Build(context, hub)
|
|
}
|
|
}
|
|
}
|
|
|