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.

76 lines
2.6 KiB

3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
3 years ago
4 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 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(movementActor: ActorRef[ImMovementActor.Command]) =
  13. Behaviors.logMessages(
  14. LogOptions()
  15. .withLevel(Level.TRACE)
  16. .withLogger(
  17. Logger[PlayerMovementEventListener.type].underlying
  18. ),
  19. Behaviors.setup[PlayerMovementEvent](ctx =>
  20. Behaviors.receiveMessage {
  21. case PlayerMovedLeft(pressed) =>
  22. movementActor ! ImMovementActor.MoveLeft(pressed)
  23. Behaviors.same
  24. case PlayerMovedRight(pressed) =>
  25. movementActor ! ImMovementActor.MoveRight(pressed)
  26. Behaviors.same
  27. case PlayerMovedForward(pressed) =>
  28. movementActor ! ImMovementActor.MoveUp(pressed)
  29. Behaviors.same
  30. case PlayerMovedBackward(pressed) =>
  31. movementActor ! ImMovementActor.MoveDown(pressed)
  32. Behaviors.same
  33. case PlayerJumped =>
  34. movementActor ! ImMovementActor.Jump
  35. Behaviors.same
  36. // case PlayerTurnedRight =>
  37. // movementActor ! ImMovementActor.RotateRight
  38. // Behaviors.same
  39. // case PlayerTurnedLeft =>
  40. // movementActor ! ImMovementActor.RotateLeft
  41. // Behaviors.same
  42. }
  43. )
  44. )
  45. }
  46. //not used
  47. object PlayerCameraEventListener {
  48. import PlayerCameraEvent._
  49. def apply(playerCameraActor: ActorRef[PlayerCameraActor.Command]) =
  50. Behaviors.logMessages(
  51. LogOptions()
  52. .withLevel(Level.TRACE)
  53. .withLogger(
  54. Logger[PlayerCameraEventListener.type].underlying
  55. ),
  56. Behaviors.setup[PlayerCameraEvent](ctx =>
  57. Behaviors.receiveMessagePartial {
  58. case CameraMovedUp =>
  59. playerCameraActor ! PlayerCameraActor.RotateUp
  60. Behaviors.same
  61. case CameraMovedDown =>
  62. playerCameraActor ! PlayerCameraActor.RotateDown
  63. Behaviors.same
  64. case CameraLeft =>
  65. playerCameraActor ! PlayerCameraActor.RotateLeft
  66. Behaviors.same
  67. case CameraRight =>
  68. playerCameraActor ! PlayerCameraActor.RotateRight
  69. Behaviors.same
  70. }
  71. )
  72. )
  73. }