From 23f566af51c724bd80e7f0281edd841666e42a73 Mon Sep 17 00:00:00 2001 From: Anibus Date: Sun, 29 Nov 2020 04:56:32 +0300 Subject: [PATCH] Add alternative Draft --- app/actors/LobbieActor.scala | 28 +++++++++++++- app/actors/UserActor.scala | 26 ++++++++++++- app/assets/images/buttons/Ulthwe.png | Bin 0 -> 6829 bytes app/assets/images/buttons/isAuto.png | Bin 0 -> 18203 bytes app/assets/javascripts/index.js | 56 ++++++++++++++++++++++++--- 5 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 app/assets/images/buttons/Ulthwe.png create mode 100644 app/assets/images/buttons/isAuto.png diff --git a/app/actors/LobbieActor.scala b/app/actors/LobbieActor.scala index a67d2f3..564fd5f 100644 --- a/app/actors/LobbieActor.scala +++ b/app/actors/LobbieActor.scala @@ -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 \ No newline at end of file diff --git a/app/actors/UserActor.scala b/app/actors/UserActor.scala index 194f6fb..1b0916a 100644 --- a/app/actors/UserActor.scala +++ b/app/actors/UserActor.scala @@ -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) diff --git a/app/assets/images/buttons/Ulthwe.png b/app/assets/images/buttons/Ulthwe.png new file mode 100644 index 0000000000000000000000000000000000000000..8b274d2556a1e1ba8dd4a9c395be6c2a750c420f GIT binary patch literal 6829 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 SJ2`&<0000
" if(lobby.user2Info.name !== ""){ @@ -273,19 +292,36 @@ function renderPlayersAndStats(lobby) { } resHtml += "

" + lobby.user2Info.name + ": " + player2ReadyBtn + kickBtn + "
" }else{ - resHtml += "
waiting 2-nd player...
" + resHtml += "
waiting 2-nd player...
" } + + var disabledText = ""; + + + if(lobby.user1Info.name !== userName){ + disabledText = "disabled"; + } + resHtml += "
" + resHtml += ""; break; case "Draft()": console.log(lobby.turn); var playerTurn = (lobby.playerTurn === 1) ? lobby.user1Info.name : lobby.user2Info.name - resHtml = "
"+lobby.user1Info.name + " vs " + lobby.user2Info.name +"
" + playerTurn +" turn
"; + resHtml = "
"+lobby.user1Info.name + " vs " + lobby.user2Info.name + " - " +lobbyTypeText+ "
" + playerTurn +" turn
"; break; case "Finish()": - var lastMap = _.find(lobby.maps, function (map){ + var lastMaps = _.filter(lobby.maps, function (map){ return map.isBanned === false; - }).map; - resHtml = "
"+convertMapName(lastMap)+"
"; + }); + resHtml = "
"; + _.forEach(lastMaps,function (map){ + resHtml += convertMapName(map.map) + "; " + }) + resHtml += "
"; } resHtml = resHtml + "" @@ -326,6 +362,14 @@ function setNotReady(){ })); } +function changeLobbyType(){ + var lobbyType = $("#deciderOption").val(); + ws.send(JSON.stringify({ + type: "changeLobbyType", + lobbyType: lobbyType + })); +} + function joinDecider(actorName){ ws.send(JSON.stringify({ type: "joinDecider",