This commit is contained in:
Anibus
2020-11-29 03:13:10 +03:00
parent ec519889dc
commit 460e95c824
5 changed files with 149 additions and 69 deletions
+23 -1
View File
@@ -1,6 +1,6 @@
package actors
import actors.UserActor.{GetName, HostLeaveLobby, LobbyFatal, RefreshLobbyInfo, SecondPlayerLeaveLobby, SetUserAsHost, SetUserAsObs, SetUserAsSecondPlayer}
import actors.UserActor.{BanMapMessage, GetName, HostLeaveLobby, LobbyFatal, Message, RefreshLobbyInfo, SecondPlayerLeaveLobby, SendBanMapMessage, SendMessage, SetUserAsHost, SetUserAsObs, SetUserAsSecondPlayer}
import akka.actor._
import akka.event.LoggingReceive
import akka.pattern.ask
@@ -33,6 +33,10 @@ class UserActor(out: ActorRef,
implicit val lobbyWrites: OWrites[LobbyInfo] = Json.writes[LobbyInfo]
implicit val messageWrites: OWrites[Message] = Json.writes[Message]
implicit val messageBanMapWrites: OWrites[BanMapMessage] = Json.writes[BanMapMessage]
implicit val lobbyResponseWrites: Writes[List[LobbyInfo]] = new Writes[List[LobbyInfo]] {
override def writes(o: List[LobbyInfo]): JsValue = {
@@ -84,6 +88,14 @@ class UserActor(out: ActorRef,
logger.trace(s"Refresh lobby info: $lobbyInfo")
out ! Json.obj("type" -> "refreshLobby", "lobby" -> lobbyInfo)
case SendMessage(message) =>
logger.debug(s"Send message $message")
out ! Json.obj("type" -> "sendMessage", "message" -> message)
case SendBanMapMessage(mapBanMessage) =>
logger.debug(s"Send ban map message $mapBanMessage")
out ! Json.obj("type" -> "sendMapBanMessage", "message" -> mapBanMessage)
case LobbyFatal(message) => // После этого сообщения выход из лобби
logger.warn(s"Lobby error: $message")
out ! Json.obj("type" -> "lobbyError", "error" -> message)
@@ -119,6 +131,10 @@ class UserActor(out: ActorRef,
case Some("setNotReady") =>
lobbieActor.foreach(lobby => lobby ! SetNotReady)
case Some("sendMessage") =>
val message = (json \ "message").as[String]
lobbieActor.foreach(lobby => lobby ! MessageForLobby(message))
case Some("kickSecondPlayer") =>
lobbieActor.foreach(lobby => lobby ! KickSecondPlayer)
@@ -186,6 +202,12 @@ object UserActor {
case object GetName
case class Message(userName: String, message: String)
case class SendMessage(message: Message)
case class BanMapMessage(user: String, mapTechName: String)
case class SendBanMapMessage(message: BanMapMessage)
case class RefreshLobbyInfo(lobbyInfo: LobbyInfo)
case class SetUserAsHost(lobbyInfo: LobbyInfo)