|
|
package wow.doge.mygame.game
import akka.actor.typed.scaladsl.Behaviors import wow.doge.mygame.state.PlayerMovementState import com.jme3.scene.Geometry
import wow.doge.mygame.events.EventBus import wow.doge.mygame.events.Events import wow.doge.mygame.state.ImMovementActor import com.jme3.scene.CameraNode import com.jme3.scene.Node import com.jme3.renderer.Camera import wow.doge.mygame.executors.Schedulers import wow.doge.mygame.game.nodes.PlayerNode import com.softwaremill.macwire._
import wow.doge.mygame.implicits._
object GameAppActor { import Methods._
sealed trait Command case object XD extends Command case object Stop extends Command def apply(app: GameApp, schedulers: Schedulers) = Behaviors.setup[Command] { ctx => ctx.log.info("Hello from GameAppActor") // lazy val b = new Box(1, 1, 1)
// lazy val geom = new Geometry("Box", b)
// lazy val playerNode = new Node("PlayerNode")
// lazy val camNode = new CameraNode("CameraNode", app.getCamera())
// lazy val players = createPlayer(geom, app.getCamera())
// ctx.pipeToSelf(
// app.enqueueF(() => ())(monix.execution.Scheduler.io("aege"))
// ) {
// case x =>
// println("SENDEDEEEEEd")
// XD
// }
// ctx.pipeToSelf(
// createPlayer(
// geom,
// app.getCamera(),
// schedulers.jme
// )
// ) {
// case x =>
// println(x)
// XD
// }
val subscribingActor = ctx.spawn(SubscribingActor(), "subscriber-1")
val tickEventBus = ctx.spawn(Behaviors.logMessages(EventBus[Events.Tick]()), "eventBus1")
tickEventBus ! EventBus.Subscribe(subscribingActor)
tickEventBus ! EventBus.Publish(Events.PhysicsTick, ctx.self)
// {
// app
// .getInputManager()
// .observableAction("Left")
// .map { action =>
// action.binding.name match {
// case "Left" => Task(println("Pressed left"))
// }
// }
// }
// binding match {
// case "Left" =>
def playerNodeFactory = PlayerNode( modelPath = os.rel / "Models" / "Jaime" / "Jaime.j3o", cam = app.camera ) _ // (assetManager = app.assetManager)
{ lazy val playerNode = playerNodeFactory(app.assetManager)
lazy val actor = ctx.spawn( ImMovementActor(ImMovementActor.Props(app, playerNode)), "imMovementActor" ) lazy val state = wire[PlayerMovementState] app.stateManager.attach(state) }
Thread.sleep(2000)
app .getRootNode() .depthFirst(s => // s match {
// case node: Node =>
// println("node" + s.getName() + " children " + node.getChildren())
// case g: Geometry => println(s.getName())
// }
println(s.getName()) )
println("----------------")
{ app .getRootNode() .observableDepthFirst() .map(s => s.getName()) // .takeWhileInclusive(_.getName() != "level")
.onErrorHandle(e => e.getMessage()) .foreach(println)(schedulers.async)
}
println("----------------")
{ app .getRootNode() .observableBreadthFirst() .map(s => s.getName()) // .takeWhileInclusive(_.getName() != "level")
.onErrorHandle(e => e.getMessage()) .foreach(println)(schedulers.async)
}
// app.start()
// Behaviors.same
Behaviors.receiveMessage { msg => msg match { case XD => ctx.log.info("RECEEEEEIVED") ctx.log.info(app.camera.toString()) Behaviors.same case Stop => ctx.log.info("Received stop") Behaviors.stopped
} } } }
object Methods { def createPlayer( geom: Geometry, cam: Camera ): Node = { val playerNode = new Node("PlayerNode") lazy val camNode = new CameraNode("CameraNode", cam) playerNode .child(camNode) .child(geom) playerNode }
def old() = { // val movementActor =
// ctx.spawn(
// MovementActor(MovementActor.Props(app, geom)),
// "movementActor"
// // DispatcherSelector.fromConfig("jme-dispatcher")
// )
// val movementActorTimer = ctx.spawn(
// MovementActorTimer(movementActor),
// "movementActorTimer"
// )
} }
object SubscribingActor { def apply() = Behaviors.receive[Events.PhysicsTick.type] { (ctx, msg) => ctx.log.debug(s"received event $msg") Behaviors.same } } // new PlayerMovementState(
// // movementActor,
// // movementActorTimer,
// imMovementActor,
// // geom,
// // camNode,
// playerNode
// // ctx.self
// )
|