Testing out JmonkeyEngine to make a game in Scala with Akka Actors within a pure FP layer
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package wow.doge.mygame.game
import akka.actor.typed.scaladsl.Behaviors import wow.doge.mygame.state.MovementActor import wow.doge.mygame.state.PlayerMovementState2 import wow.doge.mygame.state.MovementActorTimer import com.jme3.scene.shape.Box import com.jme3.scene.Geometry import wow.doge.mygame.implicits._ import wow.doge.mygame.events.EventBus import wow.doge.mygame.events.Events import wow.doge.mygame.state.ImMovementActor
object GameAppActor {
sealed trait Command def apply(app: GameApp) = Behaviors.setup[Command] { ctx => lazy val b = new Box(1, 1, 1) lazy val geom = new Geometry("Box", b) val movementActor = ctx.spawn( MovementActor(MovementActor.Props(app, geom)), "movementActor" // DispatcherSelector.fromConfig("jme-dispatcher")
)
val movementActorTimer = ctx.spawn( MovementActorTimer(movementActor), "movementActorTimer" ) val imMovementActor = ctx.spawn( ImMovementActor(ImMovementActor.Props(app, geom)), "imMovementActor" )
val subscribingActor = ctx.spawn(SubscribingActor(), "subscriber-1")
val eventBus = ctx.spawn(Behaviors.logMessages(EventBus[Events.Tick]()), "eventBus1")
eventBus ! EventBus.Subscribe(subscribingActor)
eventBus ! EventBus.Publish(Events.PhysicsTick, ctx.self)
app .getStateManager() .attach( new PlayerMovementState2( movementActor, movementActorTimer, imMovementActor, geom ) ) app.start() Behaviors.stopped } }
object SubscribingActor { def apply() = Behaviors.receive[Events.PhysicsTick.type] { (ctx, msg) => ctx.log.debug(s"received event $msg") Behaviors.same } }
|