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.

75 lines
2.5 KiB

4 years ago
4 years ago
4 years ago
4 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
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. object PlayerCameraEventListener {
  47. import PlayerCameraEvent._
  48. def apply(playerCameraActor: ActorRef[PlayerCameraActor.Command]) =
  49. Behaviors.logMessages(
  50. LogOptions()
  51. .withLevel(Level.TRACE)
  52. .withLogger(
  53. Logger[PlayerCameraEventListener.type].underlying
  54. ),
  55. Behaviors.setup[PlayerCameraEvent](ctx =>
  56. Behaviors.receiveMessagePartial {
  57. case CameraMovedUp =>
  58. playerCameraActor ! PlayerCameraActor.RotateUp
  59. Behaviors.same
  60. case CameraMovedDown =>
  61. playerCameraActor ! PlayerCameraActor.RotateDown
  62. Behaviors.same
  63. case CameraLeft =>
  64. playerCameraActor ! PlayerCameraActor.RotateLeft
  65. Behaviors.same
  66. case CameraRight =>
  67. playerCameraActor ! PlayerCameraActor.RotateRight
  68. Behaviors.same
  69. }
  70. )
  71. )
  72. }