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.

33 lines
1.1 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
  1. package wow.doge.mygame
  2. import java.util.concurrent.TimeoutException
  3. import cats.Show
  4. import cats.kernel.Eq
  5. import monix.bio.IO
  6. import wow.doge.mygame.utils.wrappers.jme.AssetManager
  7. import wow.doge.mygame.utils.wrappers.jme.CollisionShapeFactory
  8. import wow.doge.mygame.utils.wrappers.jme.NodeWrapper2
  9. sealed trait AppError
  10. object AppError {
  11. final case class TimeoutError(reason: String) extends AppError
  12. object TimeoutError {
  13. def from: PartialFunction[Throwable, IO[TimeoutError, Nothing]] = {
  14. case ex: TimeoutException => IO.raiseError(TimeoutError(ex.getMessage))
  15. }
  16. }
  17. final case class AssetManagerError(error: AssetManager.Error) extends AppError
  18. final case class AppNodeError(error: NodeWrapper2.Error) extends AppError
  19. final case class CollisionShapeCreationFailed(
  20. err: CollisionShapeFactory.Error
  21. ) extends AppError
  22. def fromThrowable: PartialFunction[Throwable, IO[AppError, Nothing]] = {
  23. case ex: TimeoutException => IO.raiseError(TimeoutError(ex.getMessage))
  24. }
  25. implicit val show = Show.fromToString[AppError]
  26. implicit val eq = Eq.fromUniversalEquals[AppError]
  27. }