Autum cup 2 decider
This commit is contained in:
@@ -130,12 +130,12 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
|
||||
sender ! SetUserAsObs(getLobbyInfoResponse)
|
||||
case LeaveLobby =>
|
||||
users = users - sender
|
||||
if(secondPlayer.exists(sp => sp.actorRef == sender)) secondPlayer = None
|
||||
if(host.actorRef == sender()){
|
||||
users.foreach(_ ! HostLeaveLobby)
|
||||
context.stop(self)
|
||||
}else if(secondPlayer.exists(_.actorRef == sender())){
|
||||
users.foreach(_ ! SecondPlayerLeaveLobby)
|
||||
secondPlayer = None
|
||||
context.stop(self)
|
||||
}
|
||||
if (users.isEmpty) {
|
||||
@@ -165,12 +165,12 @@ case class MapsUpdate(maps: Set[String])
|
||||
|
||||
case class CreateLobby(userName: String)
|
||||
|
||||
case class WatchLobby(lobbyName: String)
|
||||
|
||||
case class JoinLobbyAsPlayer(lobbyUser: LobbyUser)
|
||||
|
||||
case object KickSecondPlayer
|
||||
|
||||
case class WatchLobby(lobbyName: String)
|
||||
|
||||
case object LeaveLobby
|
||||
|
||||
case object SetReady
|
||||
|
||||
@@ -30,6 +30,13 @@ class LobbiesActor extends Actor with LazyLogging {
|
||||
case Some(lobbyActor) => lobbyActor ! JoinLobbyAsPlayer(LobbyUser(userName, user))
|
||||
case None => logger.error(s"Can't watch lobby $lobbyName - lobby not exists")
|
||||
}
|
||||
case ObserveLobbyByActorName(lobbyName) =>
|
||||
// get or create the StockActor for the symbol and forward this message
|
||||
val user = sender
|
||||
context.child(lobbyName) match {
|
||||
case Some(lobbyActor) => lobbyActor.tell(WatchLobby("watchIt"), user)
|
||||
case None => logger.error(s"Can't watch lobby $lobbyName - lobby not exists")
|
||||
}
|
||||
case watchLobby@WatchLobby(lobbyName) =>
|
||||
// get or create the StockActor for the symbol and forward this message
|
||||
context.child(lobbyName) match {
|
||||
@@ -50,4 +57,6 @@ case object GetAllLobbies
|
||||
|
||||
case class JoinLobbyByActorName(actorName: String, userName: String)
|
||||
|
||||
case class ObserveLobbyByActorName(actorName: String)
|
||||
|
||||
case object UnWatchAllLobbies
|
||||
@@ -1,6 +1,6 @@
|
||||
package actors
|
||||
|
||||
import actors.UserActor.{GetName, HostLeaveLobby, LobbyFatal, RefreshLobbyInfo, SecondPlayerLeaveLobby, SetUserAsHost, SetUserAsSecondPlayer}
|
||||
import actors.UserActor.{GetName, HostLeaveLobby, LobbyFatal, RefreshLobbyInfo, SecondPlayerLeaveLobby, SetUserAsHost, SetUserAsObs, SetUserAsSecondPlayer}
|
||||
import akka.actor._
|
||||
import akka.event.LoggingReceive
|
||||
import akka.pattern.ask
|
||||
@@ -67,6 +67,11 @@ class UserActor(out: ActorRef,
|
||||
logger.info(s"Receive set user ${self.path.name} as second player from ${lobbyActor.path.name}")
|
||||
setUserAsJoinedOrCreatedLobby(lobbyActor, lobbyInfo)
|
||||
|
||||
case SetUserAsObs(lobbyInfo) =>
|
||||
val lobbyActor = sender()
|
||||
logger.info(s"Receive set user ${self.path.name} as second player from ${lobbyActor.path.name}")
|
||||
setUserAsJoinedOrCreatedLobby(lobbyActor, lobbyInfo)
|
||||
|
||||
case HostLeaveLobby =>
|
||||
logger.info(s"Host leave from lobby ${sender.path.name}")
|
||||
out ! Json.obj("type" -> "lobbyError", "error" -> "Host leave lobby")
|
||||
@@ -122,6 +127,11 @@ class UserActor(out: ActorRef,
|
||||
logger.info(s"Player ${self.path.name} join lobby $lobbyActorName")
|
||||
lobbiesActor ! JoinLobbyByActorName(lobbyActorName, name)
|
||||
|
||||
case Some("observerDecider") =>
|
||||
val lobbyActorName = (json \ "lobbyActorName").as[String]
|
||||
logger.info(s"Player ${self.path.name} observe lobby $lobbyActorName")
|
||||
lobbiesActor ! ObserveLobbyByActorName(lobbyActorName)
|
||||
|
||||
case Some("banMap") =>
|
||||
val map = (json \ "map").as[String]
|
||||
lobbieActor.foreach(lobby => lobby ! BanMap(map))
|
||||
|
||||
Reference in New Issue
Block a user