Add alternative Draft
This commit is contained in:
@@ -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
|
||||
@@ -31,7 +31,17 @@ class UserActor(out: ActorRef,
|
||||
|
||||
implicit val userInfoWrites: OWrites[UserInfo] = Json.writes[UserInfo]
|
||||
|
||||
implicit val lobbyWrites: OWrites[LobbyInfo] = Json.writes[LobbyInfo]
|
||||
implicit val lobbyWrites: Writes[LobbyInfo] = new Writes[LobbyInfo]{
|
||||
override def writes(lobby: LobbyInfo) = Json.obj(
|
||||
"user1Info" -> lobby.user1Info,
|
||||
"user2Info" -> lobby.user2Info,
|
||||
"lobbyActorName" -> lobby.lobbyActorName,
|
||||
"status" -> lobby.status,
|
||||
"playerTurn" -> lobby.playerTurn,
|
||||
"selectedType" -> lobby.selectedType,
|
||||
"maps" -> Json.toJson(lobby.maps)
|
||||
)
|
||||
}
|
||||
|
||||
implicit val messageWrites: OWrites[Message] = Json.writes[Message]
|
||||
|
||||
@@ -40,7 +50,15 @@ class UserActor(out: ActorRef,
|
||||
implicit val lobbyResponseWrites: Writes[List[LobbyInfo]] = new Writes[List[LobbyInfo]] {
|
||||
|
||||
override def writes(o: List[LobbyInfo]): JsValue = {
|
||||
JsArray(o.map(lobby => Json.toJson(lobby)))
|
||||
JsArray(o.map(lobby => Json.obj(
|
||||
"user1Info" -> lobby.user1Info,
|
||||
"user2Info" -> lobby.user2Info,
|
||||
"lobbyActorName" -> lobby.lobbyActorName,
|
||||
"status" -> lobby.status,
|
||||
"playerTurn" -> lobby.playerTurn,
|
||||
"selectedType" -> lobby.selectedType,
|
||||
"maps" -> Json.toJson(lobby.maps)
|
||||
)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +153,10 @@ class UserActor(out: ActorRef,
|
||||
val message = (json \ "message").as[String]
|
||||
lobbieActor.foreach(lobby => lobby ! MessageForLobby(message))
|
||||
|
||||
case Some("changeLobbyType") =>
|
||||
val lobbyType = (json \ "lobbyType").as[String]
|
||||
lobbieActor.foreach(lobby => lobby ! ChangeLobbyType(lobbyType))
|
||||
|
||||
case Some("kickSecondPlayer") =>
|
||||
lobbieActor.foreach(lobby => lobby ! KickSecondPlayer)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user