Tournaments can be configured now

This commit is contained in:
Viktor Kholodov
2021-10-23 14:13:36 +03:00
parent 52baef061b
commit aa692419cf
8 changed files with 93 additions and 41 deletions
+6 -3
View File
@@ -20,7 +20,7 @@ case class DeciderMap(map: String, var isBanned: Boolean = false)
* There is one StockActor per stock symbol. The StockActor maintains a list of users watching the stock and the stock
* values. Each StockActor updates a rolling dataset of randomly generated stock values.
*/
class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
class LobbieActor(hostUser: LobbyUser, deciderName: String) extends Actor with LazyLogging {
val config = ConfigFactory.load()
logger.info(s"Create lobby... host: ${hostUser.actorRef.path.name}")
@@ -46,7 +46,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
private var isNecrons: Boolean = false
private val mapsLobby: Set[DeciderMap] = {
val configMaps = config.getStringList("maps").asScala
val configMaps = config.getStringList(s"deciders.$deciderName.maps").asScala
configMaps.map(e => {
DeciderMap(e)
}).toSet
@@ -57,6 +57,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
UserInfo(hostUser.name,firstPlayerReady),
UserInfo("", secondPlayerReady),
self.path.name,
deciderName,
status.toString(),
playerTurn,
lobbyType.toString(),
@@ -211,6 +212,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
UserInfo(host.name, firstPlayerReady),
UserInfo(user2Name, secondPlayerReady),
self.path.name,
deciderName,
status.toString(),
playerTurn,
lobbyType.toString(),
@@ -223,7 +225,7 @@ case class BanMap(mapName: String)
case class MapsUpdate(maps: Set[String])
case class CreateLobby(userName: String)
case class CreateLobby(userName: String, deciderName: String)
case class JoinLobbyAsPlayer(lobbyUser: LobbyUser)
@@ -250,6 +252,7 @@ case class UserInfo(name: String, isReady: Boolean)
case class LobbyInfo(user1Info: UserInfo,
user2Info: UserInfo,
lobbyActorName: String,
deciderName: String,
status: String,
playerTurn: BigDecimal,
selectedType: String,
+2 -2
View File
@@ -17,10 +17,10 @@ class LobbiesActor extends Actor with LazyLogging {
val lobbies: ListBuffer[String] = ListBuffer()
def receive: Receive = LoggingReceive {
case CreateLobby(hostName) =>
case CreateLobby(hostName, deciderName) =>
val hostActorRef = sender
logger.info(s"Player ${hostActorRef.path.name} create lobby.")
val lobbyActor = context.actorOf(Props(new LobbieActor(LobbyUser(hostName, hostActorRef))),
val lobbyActor = context.actorOf(Props(new LobbieActor(LobbyUser(hostName, hostActorRef), deciderName)),
s"lobbyActor-${(math.random * 100000000L).toLong}")
lobbyActor.tell(WatchLobby("watchIt"), hostActorRef)
case JoinLobbyByActorName(lobbyName, userName) =>
+4 -1
View File
@@ -35,6 +35,7 @@ class UserActor(out: ActorRef,
"user1Info" -> lobby.user1Info,
"user2Info" -> lobby.user2Info,
"lobbyActorName" -> lobby.lobbyActorName,
"deciderName" -> lobby.deciderName,
"status" -> lobby.status,
"playerTurn" -> lobby.playerTurn,
"selectedType" -> lobby.selectedType,
@@ -54,6 +55,7 @@ class UserActor(out: ActorRef,
"user1Info" -> lobby.user1Info,
"user2Info" -> lobby.user2Info,
"lobbyActorName" -> lobby.lobbyActorName,
"deciderName" -> lobby.deciderName,
"status" -> lobby.status,
"playerTurn" -> lobby.playerTurn,
"selectedType" -> lobby.selectedType,
@@ -129,7 +131,8 @@ class UserActor(out: ActorRef,
logger.debug(s"Set user name: $name for actor ${this.self}")
case Some("createDecider") =>
LobbiesActor.actor ! CreateLobby(name)
val deciderName = (json \ "deciderName").as[String]
LobbiesActor.actor ! CreateLobby(name, deciderName)
case Some("leaveDecider") =>
lobbieActor.foreach(lobby => lobby ! LeaveLobby)