Add alternative Draft
This commit is contained in:
parent
460e95c824
commit
23f566af51
@ -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)
|
||||
|
||||
|
||||
BIN
app/assets/images/buttons/Ulthwe.png
Normal file
BIN
app/assets/images/buttons/Ulthwe.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.7 KiB |
BIN
app/assets/images/buttons/isAuto.png
Normal file
BIN
app/assets/images/buttons/isAuto.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
@ -263,7 +263,26 @@ function renderPlayersAndStats(lobby) {
|
||||
$("#inputMsg").hide();
|
||||
}
|
||||
|
||||
switch (lobby.status){
|
||||
var lobbyTypeText = "";
|
||||
var last3Selected = "";
|
||||
var last4Selected = "";
|
||||
var looserPickSelected = "";
|
||||
switch (lobby.selectedType) {
|
||||
case "Last3()":
|
||||
last3Selected = "selected";
|
||||
lobbyTypeText = "Play on last 3 maps";
|
||||
break;
|
||||
case "Last4()":
|
||||
last4Selected = "selected";
|
||||
lobbyTypeText = "Play on last 4 maps";
|
||||
break;
|
||||
case "LooserPick()":
|
||||
looserPickSelected = "selected";
|
||||
lobbyTypeText = "Decide first, then looserpick";
|
||||
break;
|
||||
}
|
||||
|
||||
switch (lobby.status) {
|
||||
case "NotStarted()":
|
||||
resHtml = "<div style='float: left; padding-top: 10px;'> <div>" + lobby.user1Info.name + ": " + player1ReadyBtn +"</div><br/>"
|
||||
if(lobby.user2Info.name !== ""){
|
||||
@ -273,19 +292,36 @@ function renderPlayersAndStats(lobby) {
|
||||
}
|
||||
resHtml += "<div>" + lobby.user2Info.name + ": " + player2ReadyBtn + kickBtn + "</div>"
|
||||
}else{
|
||||
resHtml += "<div>waiting 2-nd player...</div></div>"
|
||||
resHtml += "<div>waiting 2-nd player...</div>"
|
||||
}
|
||||
|
||||
var disabledText = "";
|
||||
|
||||
|
||||
if(lobby.user1Info.name !== userName){
|
||||
disabledText = "disabled";
|
||||
}
|
||||
resHtml += "<br/><select class=\"form-control\" id = 'deciderOption' onChange='changeLobbyType()' "+disabledText+" >" +
|
||||
"<option "+last3Selected+" value = 'last3'>Play on last 3 maps</option>" +
|
||||
"<option "+last4Selected+" value = 'last4'>Play on last 4 maps</option>" +
|
||||
"<option "+looserPickSelected+" value = 'looserpick'>Decide first, then looserpick</option>" +
|
||||
"</select>"
|
||||
resHtml += "</div>";
|
||||
break;
|
||||
case "Draft()":
|
||||
console.log(lobby.turn);
|
||||
var playerTurn = (lobby.playerTurn === 1) ? lobby.user1Info.name : lobby.user2Info.name
|
||||
resHtml = "<center>"+lobby.user1Info.name + " vs " + lobby.user2Info.name +"<br/><b>" + playerTurn +"</b> turn</center>";
|
||||
resHtml = "<center>"+lobby.user1Info.name + " vs " + lobby.user2Info.name + " - " +lobbyTypeText+ "<br/><b>" + playerTurn +"</b> turn</center>";
|
||||
break;
|
||||
case "Finish()":
|
||||
var lastMap = _.find(lobby.maps, function (map){
|
||||
var lastMaps = _.filter(lobby.maps, function (map){
|
||||
return map.isBanned === false;
|
||||
}).map;
|
||||
resHtml = "<center><b>"+convertMapName(lastMap)+"</b></center>";
|
||||
});
|
||||
resHtml = "<center><b>";
|
||||
_.forEach(lastMaps,function (map){
|
||||
resHtml += convertMapName(map.map) + "; "
|
||||
})
|
||||
resHtml += "</b></center>";
|
||||
}
|
||||
|
||||
resHtml = resHtml + "</center>"
|
||||
@ -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",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user