32 lines
987 B
Scala
32 lines
987 B
Scala
package controllers.massivedecks
|
|
|
|
import akka.actor.{Actor, ActorRef, Props}
|
|
import controllers.massivedecks.game.Actions.Lobby.{Unregister, Register}
|
|
import controllers.massivedecks.game.Actions.Store.LobbyAction
|
|
import models.massivedecks.Player.Secret
|
|
import play.api.libs.json.Json
|
|
|
|
import models.massivedecks.Player.Formatters._
|
|
|
|
class NotificationHandler(val lobbyId: String, val store: ActorRef, val out: ActorRef) extends Actor {
|
|
var secret: Option[Secret] = None
|
|
|
|
override def receive = {
|
|
case message: String =>
|
|
secret = Json.parse(message).validate[Secret].asOpt
|
|
if (secret.isDefined)
|
|
{
|
|
store ! LobbyAction(lobbyId, Register(secret.get, out))
|
|
}
|
|
}
|
|
|
|
override def postStop(): Unit = {
|
|
if (secret.isDefined) {
|
|
store ! LobbyAction(lobbyId, Unregister(secret.get, out))
|
|
}
|
|
}
|
|
}
|
|
object NotificationHandler {
|
|
def props(lobbyId: String, store: ActorRef, out: ActorRef) = Props(new NotificationHandler(lobbyId, store, out))
|
|
}
|