Add alternative Draft

This commit is contained in:
Anibus
2020-11-29 04:56:32 +03:00
parent 460e95c824
commit 23f566af51
5 changed files with 101 additions and 9 deletions
+27 -1
View File
@@ -41,6 +41,8 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
private var status: LobbyStatus = NotStarted()
private var lobbyType: LobbyType = Last3()
private val mapsLobby: Set[DeciderMap] = {
val configMaps = config.getStringList("maps").asScala
configMaps.map(e => {
@@ -55,6 +57,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
self.path.name,
status.toString(),
playerTurn,
lobbyType.toString(),
mapsLobby)),
this.self)
@@ -74,7 +77,9 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
if(!map.isBanned){
map.isBanned = true
if (playerTurn== 1) playerTurn = 2 else playerTurn = 1
if(mapsLobby.count(_.isBanned == false) == 1){
if(mapsLobby.count(_.isBanned == false) == 3 && lobbyType == Last3() ||
mapsLobby.count(_.isBanned == false) == 4 && lobbyType == Last4() ||
mapsLobby.count(_.isBanned == false) == 1 && lobbyType == LooserPick()){
status = Finish()
}
users.foreach(_ ! RefreshLobbyInfo(getLobbyInfoResponse))
@@ -120,6 +125,17 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
}
users.foreach(_ ! RefreshLobbyInfo(getLobbyInfoResponse))
case ChangeLobbyType(lobbyTypeNew) =>
lobbyTypeNew match {
case "last3" =>
lobbyType = Last3()
case "last4" =>
lobbyType = Last4()
case "looserpick" =>
lobbyType = LooserPick()
}
users.foreach(_ ! RefreshLobbyInfo(getLobbyInfoResponse))
case KickSecondPlayer =>
if (sender() == host.actorRef) {
secondPlayer.foreach(player => player.actorRef ! LobbyFatal("You were kicked from lobby!"))
@@ -177,6 +193,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
self.path.name,
status.toString(),
playerTurn,
lobbyType.toString(),
mapsLobby)
}
}
@@ -201,6 +218,8 @@ case object SetNotReady
case class MessageForLobby(message: String)
case class ChangeLobbyType(lobbyType: String)
case object InfoQuery
case class UserInfo(name: String, isReady: Boolean)
@@ -210,6 +229,7 @@ case class LobbyInfo(user1Info: UserInfo,
lobbyActorName: String,
status: String,
playerTurn: BigDecimal,
selectedType: String,
maps: Set[DeciderMap])
class LobbyStatus
@@ -217,3 +237,9 @@ class LobbyStatus
sealed case class NotStarted() extends LobbyStatus
sealed case class Draft() extends LobbyStatus
sealed case class Finish() extends LobbyStatus
class LobbyType
sealed case class Last3() extends LobbyType
sealed case class Last4() extends LobbyType
sealed case class LooserPick() extends LobbyType