forked from nova/jmonkey-test
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.
90 lines
3.0 KiB
90 lines
3.0 KiB
package wow.doge.mygame.game.nodes
|
|
|
|
import akka.actor.typed.ActorRef
|
|
import akka.actor.typed.scaladsl.Behaviors
|
|
import wow.doge.mygame.subsystems.movement.ImMovementActor
|
|
import org.slf4j.event.Level
|
|
import akka.actor.typed.LogOptions
|
|
import wow.doge.mygame.subsystems.events.EntityMovementEvent.PlayerMovementEvent
|
|
import com.typesafe.scalalogging.Logger
|
|
import wow.doge.mygame.subsystems.events.PlayerCameraEvent
|
|
import wow.doge.mygame.subsystems.events.PlayerCameraEvent.CameraMovedUp
|
|
import wow.doge.mygame.subsystems.events.PlayerCameraEvent.CameraMovedDown
|
|
import com.jme3.scene.CameraNode
|
|
import wow.doge.mygame.game.GameApp
|
|
import wow.doge.mygame.implicits._
|
|
|
|
object PlayerMovementEventListener {
|
|
import PlayerMovementEvent._
|
|
def apply(movementActor: ActorRef[ImMovementActor.Command]) =
|
|
Behaviors.logMessages(
|
|
LogOptions()
|
|
.withLevel(Level.TRACE)
|
|
.withLogger(
|
|
Logger[PlayerMovementEventListener.type].underlying
|
|
),
|
|
Behaviors.setup[PlayerMovementEvent](ctx =>
|
|
Behaviors.receiveMessage {
|
|
case PlayerMovedLeft(pressed) =>
|
|
movementActor ! ImMovementActor.MovedLeft(pressed)
|
|
Behaviors.same
|
|
case PlayerMovedRight(pressed) =>
|
|
movementActor ! ImMovementActor.MovedRight(pressed)
|
|
Behaviors.same
|
|
case PlayerMovedForward(pressed) =>
|
|
movementActor ! ImMovementActor.MovedUp(pressed)
|
|
Behaviors.same
|
|
case PlayerMovedBackward(pressed) =>
|
|
movementActor ! ImMovementActor.MovedDown(pressed)
|
|
Behaviors.same
|
|
case PlayerJumped =>
|
|
movementActor ! ImMovementActor.Jump
|
|
Behaviors.same
|
|
case PlayerRotatedRight =>
|
|
// ctx.log.warn("right rotate not implemented yet")
|
|
movementActor ! ImMovementActor.RotateRight
|
|
Behaviors.same
|
|
case PlayerRotatedLeft =>
|
|
// ctx.log.warn("left rotate not implemented yet")
|
|
movementActor ! ImMovementActor.RotateLeft
|
|
Behaviors.same
|
|
case PlayerCameraUp =>
|
|
ctx.log.warn("camera up not implemented yet")
|
|
Behaviors.same
|
|
case PlayerCameraDown =>
|
|
ctx.log.warn("camera down not implemented yet")
|
|
Behaviors.same
|
|
}
|
|
)
|
|
)
|
|
}
|
|
|
|
object PlayerCameraEventListener {
|
|
def apply(
|
|
camNode: CameraNode,
|
|
enqueueR: Function1[() => Unit, Unit]
|
|
) =
|
|
Behaviors.logMessages(
|
|
LogOptions()
|
|
.withLevel(Level.TRACE)
|
|
.withLogger(
|
|
Logger[PlayerCameraEventListener.type].underlying
|
|
),
|
|
Behaviors.setup[PlayerCameraEvent](ctx =>
|
|
Behaviors.receiveMessage {
|
|
case CameraMovedUp =>
|
|
enqueueR(() => {
|
|
|
|
camNode.move(0, 1, 0)
|
|
})
|
|
Behaviors.same
|
|
case CameraMovedDown =>
|
|
enqueueR(() => {
|
|
|
|
camNode.move(0, -1, 0)
|
|
})
|
|
Behaviors.same
|
|
}
|
|
)
|
|
)
|
|
}
|