package wow.doge.mygame import akka.actor.typed.ActorSystem import cats.effect.Resource import monix.bio.Task import io.odin.Logger import wow.doge.mygame.game.GameApp import wow.doge.mygame.executors.Schedulers trait ActorSystemModule { def logger: Logger[Task] def app: GameApp def schedulers: Schedulers lazy val actorsResource = Resource.make(logger.info("Creating Actor System") >> Task { ActorSystem( RootActor(app, schedulers, logger = logger), name = "GameActorSystem" ) })(sys => logger.info("Shutting down actor system") >> Task( sys.terminate() ) ) }