Add chat
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user