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.

80 lines
2.6 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. package wow.doge.mygame.game.entities
  2. import akka.actor.typed.ActorRef
  3. import akka.actor.typed.LogOptions
  4. import akka.actor.typed.scaladsl.Behaviors
  5. import com.typesafe.scalalogging.Logger
  6. import org.slf4j.event.Level
  7. import wow.doge.mygame.subsystems.events.PlayerCameraEvent
  8. import wow.doge.mygame.subsystems.events.PlayerMovementEvent
  9. import wow.doge.mygame.subsystems.movement.ImMovementActor
  10. object PlayerMovementEventListener {
  11. import PlayerMovementEvent._
  12. def apply(
  13. movementActor: ActorRef[ImMovementActor.Command]
  14. ) =
  15. Behaviors.logMessages(
  16. LogOptions()
  17. .withLevel(Level.TRACE)
  18. .withLogger(
  19. Logger[PlayerMovementEventListener.type].underlying
  20. ),
  21. Behaviors.setup[PlayerMovementEvent](ctx =>
  22. Behaviors.receiveMessage {
  23. case PlayerMovedLeft(pressed) =>
  24. movementActor ! ImMovementActor.MovedLeft(pressed)
  25. Behaviors.same
  26. case PlayerMovedRight(pressed) =>
  27. movementActor ! ImMovementActor.MovedRight(pressed)
  28. Behaviors.same
  29. case PlayerMovedForward(pressed) =>
  30. movementActor ! ImMovementActor.MovedUp(pressed)
  31. Behaviors.same
  32. case PlayerMovedBackward(pressed) =>
  33. movementActor ! ImMovementActor.MovedDown(pressed)
  34. Behaviors.same
  35. case PlayerJumped =>
  36. movementActor ! ImMovementActor.Jump
  37. Behaviors.same
  38. // case PlayerTurnedRight =>
  39. // movementActor ! ImMovementActor.RotateRight
  40. // Behaviors.same
  41. // case PlayerTurnedLeft =>
  42. // movementActor ! ImMovementActor.RotateLeft
  43. // Behaviors.same
  44. }
  45. )
  46. )
  47. }
  48. object PlayerCameraEventListener {
  49. import PlayerCameraEvent._
  50. def apply(
  51. playerCameraActor: ActorRef[PlayerCameraActor.Command]
  52. ) =
  53. Behaviors.logMessages(
  54. LogOptions()
  55. .withLevel(Level.TRACE)
  56. .withLogger(
  57. Logger[PlayerCameraEventListener.type].underlying
  58. ),
  59. Behaviors.setup[PlayerCameraEvent](ctx =>
  60. Behaviors.receiveMessagePartial {
  61. case CameraMovedUp =>
  62. playerCameraActor ! PlayerCameraActor.RotateUp
  63. Behaviors.same
  64. case CameraMovedDown =>
  65. playerCameraActor ! PlayerCameraActor.RotateDown
  66. Behaviors.same
  67. case CameraLeft =>
  68. playerCameraActor ! PlayerCameraActor.RotateLeft
  69. Behaviors.same
  70. case CameraRight =>
  71. playerCameraActor ! PlayerCameraActor.RotateRight
  72. Behaviors.same
  73. }
  74. )
  75. )
  76. }