diff --git a/app/actors/LobbieActor.scala b/app/actors/LobbieActor.scala index 3a8d22a..d9f7385 100644 --- a/app/actors/LobbieActor.scala +++ b/app/actors/LobbieActor.scala @@ -258,7 +258,7 @@ case class ChangeIsNecronSelected(isSelected: Boolean) case object InfoQuery -case class SelectedRaces(firstRace: Int, secondRace: Int, thirdRace: Int) +case class SelectedRaces(firstRace: Int, secondRace: Int, thirdRace: Int, fourthRace: Int) case class UserInfo(name: String, isReady: Boolean, selectedRaces: Option[SelectedRaces] = None) diff --git a/app/actors/UserActor.scala b/app/actors/UserActor.scala index fc2bfe9..a40b9b3 100644 --- a/app/actors/UserActor.scala +++ b/app/actors/UserActor.scala @@ -176,7 +176,8 @@ class UserActor(out: ActorRef, val firstRace = (json \ "raceFirst").as[Int] val secondRace = (json \ "raceSecond").as[Int] val thirdRace = (json \ "raceThird").as[Int] - lobbieActor.foreach(lobby => lobby ! SelectedRaces(firstRace, secondRace, thirdRace)) + val fourthRace = (json \ "raceFourth").as[Int] + lobbieActor.foreach(lobby => lobby ! SelectedRaces(firstRace, secondRace, thirdRace, fourthRace)) case Some("getLobbies") => logger.debug("Get all lobby request") diff --git a/app/assets/images/maps/8p_glacier.jpg b/app/assets/images/maps/8p_glacier.jpg new file mode 100644 index 0000000..fedf138 Binary files /dev/null and b/app/assets/images/maps/8p_glacier.jpg differ diff --git a/app/assets/images/maps/8p_clooth-na-bare.jpg b/app/assets/images/maps/8p_monse.jpg similarity index 100% rename from app/assets/images/maps/8p_clooth-na-bare.jpg rename to app/assets/images/maps/8p_monse.jpg diff --git a/app/assets/images/maps/8p_verdant_isles_ed.jpg b/app/assets/images/maps/8p_verdant_isles_ed.jpg new file mode 100644 index 0000000..407cbbc Binary files /dev/null and b/app/assets/images/maps/8p_verdant_isles_ed.jpg differ diff --git a/app/assets/images/maps/img_3.png b/app/assets/images/maps/img_3.png new file mode 100644 index 0000000..c0de693 Binary files /dev/null and b/app/assets/images/maps/img_3.png differ diff --git a/app/assets/images/maps/img_4.png b/app/assets/images/maps/img_4.png new file mode 100644 index 0000000..c0de693 Binary files /dev/null and b/app/assets/images/maps/img_4.png differ diff --git a/app/assets/images/maps/img_5.png b/app/assets/images/maps/img_5.png new file mode 100644 index 0000000..c0de693 Binary files /dev/null and b/app/assets/images/maps/img_5.png differ diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 065b436..9f5053f 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -247,7 +247,7 @@ function getRaceVideoByNumber(number){ function renderRaces() { var resHtml = ""; - resHtml += "

First race

"; + resHtml += "

First race

"; for(var i = 1; i <= 9; i++){ var selected = "raceNotSelected"; if($.cookie("race1") == i){ @@ -259,7 +259,7 @@ function renderRaces() { resHtml += "
"; if(raceCount >= 2){ - resHtml += "

Second race

"; + resHtml += "

Second race

"; for(var i = 1; i <= 9; i++){ var selected = "raceNotSelected"; if($.cookie("race2") == i){ @@ -272,7 +272,7 @@ function renderRaces() { } if(raceCount >= 3){ - resHtml += "

Third race

"; + resHtml += "

Third race

"; for(var i = 1; i <= 9; i++){ var selected = "raceNotSelected"; var banned = ""; @@ -285,6 +285,20 @@ function renderRaces() { } resHtml += "
"; } + if(raceCount >= 4){ + resHtml += "

Fourth race

"; + for(var i = 1; i <= 9; i++){ + var selected = "raceNotSelected"; + var banned = ""; + if($.cookie("race4") == i){ + selected = "raceSelected"; + banned = "bannedRace"; + selectedFourthRace = i; + } + resHtml += ' '; + } + resHtml += "
"; + } resHtml += "
"; resHtml += "

"; @@ -296,6 +310,7 @@ function renderRaces() { var selectedMainRace = 0; var selectedSecondRace = 0; var selectedThirdRace = 0; +var selectedFourthRace = 0; function selectMainRace(button, race){ selectedMainRace = race; @@ -334,9 +349,21 @@ function selectThirdRace(button, race){ checkRaceSelectFinish(); } +function selectFourthRace(button, race){ + selectedFourthRace = race; + $.cookie("race4", race, { expires: 1 }); + _.each($(".fourthRaceIcon"), function (el){ + $(el).removeClass("raceSelected"); + $(el).addClass("raceNotSelected"); + }); + $(button).removeClass("raceNotSelected"); + $(button).addClass("raceSelected"); + checkRaceSelectFinish(); +} + function checkRaceSelectFinish(){ - if(selectedMainRace !== 0 && (raceCount < 2 || selectedSecondRace !== 0) && (raceCount < 3 || selectedThirdRace !== 0)){ + if(selectedMainRace !== 0 && (raceCount < 2 || selectedSecondRace !== 0) && (raceCount < 3 || selectedThirdRace !== 0) && (raceCount < 4 || selectedFourthRace !== 0)){ $("#selectRace").removeAttr("disabled") } } @@ -347,6 +374,7 @@ function sendSelectedRacesToServer(){ raceFirst: selectedMainRace, raceSecond: selectedSecondRace, raceThird: selectedThirdRace, + raceFourth: selectedFourthRace })); $("#mapList").html("
Waiting another player...
"); } @@ -407,6 +435,9 @@ function renderFinish(maps, firstPlayerInfo, secondPlayerInfo) { if(raceCount >= 3){ resHtml += " "; } + if(raceCount >= 4){ + resHtml += " "; + } resHtml += "

" + secondPlayerInfo.name + "

"; resHtml += " "; @@ -416,6 +447,9 @@ function renderFinish(maps, firstPlayerInfo, secondPlayerInfo) { if(raceCount >= 3){ resHtml += " "; } + if(raceCount >= 4){ + resHtml += " "; + } resHtml += "
" @@ -545,6 +579,9 @@ function renderPlayersAndStats(lobby) { if(raceCount > 2){ resHtml += " "; } + if(raceCount > 3){ + resHtml += " "; + } resHtml += " VS "; resHtml += ""; if(raceCount > 1){ @@ -553,6 +590,9 @@ function renderPlayersAndStats(lobby) { if(raceCount > 2){ resHtml += " "; } + if(raceCount > 3){ + resHtml += " "; + } break; case "Finish()": renderFinish(lobby.maps, lobby.user1Info, lobby.user2Info); diff --git a/conf/application.conf b/conf/application.conf index 47e63d0..d2ed9fa 100644 --- a/conf/application.conf +++ b/conf/application.conf @@ -213,7 +213,21 @@ deciders{ name = "Shoulder to shoulder cup" rules = """Классическая Double elimination с сеткой лузеров. В сетке виннеров - БО3, в сетке лузеров - БО1, в суперфинале - БО5. Игрок, прошедший в суперфинал из верхней сетки, имеет +1 очко. Игрок из нижней сетки начинает с лузерпиком. """ } - + shouldercup4x4{ + description = true + raceCount = 4 + maps = [["8p_burial_grounds", "Количество стратегических/реликтовых/критических точек: 32/2/4\nСпорных точек: 4/2/2\nТермогенераторы: 3"], + ["8p_daturias_pits", "Количество стратегических/реликтовых/критических точек: 26/6/1\nСпорных точек: 2/2/1\nТермогенераторы: 0"], + ["8p_forbidden_jungle", "Количество стратегических/реликтовых/критических точек: 36/5/0\nСпорных точек: 12/5/0\nТермогенераторы: 4"], + ["8p_demes_northlands", "Количество стратегических/реликтовых/критических точек: 32/4/3\nСпорных точек: 3/2/2\nТермогенераторы: 2"], + ["8p_glacier", "Количество стратегических/реликтовых/критических точек: 24/4/5\nСпорных точек: 0/0/4\nТермогенераторы: 4"], + ["8p_jalaganda_lowlands", "Количество стратегических/реликтовых/критических точек: 26/5/3\nСпорных точек: 2/1/3\nТермогенераторы: 0"], + ["8p_monse", "Количество стратегических/реликтовых/критических точек: 26/4/4\nСпорных точек: 2/2/4\nТермогенераторы: 1t"], + ["8p_thurabis_plateau", "Количество стратегических/реликтовых/критических точек: 32/2/0\nСпорных точек: 12/2/0\nТермогенераторы: 0"], + ["8p_verdant_isles_ed", "Количество стратегических/реликтовых/критических точек: 32/4/3\nСпорных точек: 0/4/3\nТермогенераторы: 0"]] + name = "Shoulder to shoulder cup" + rules = """Классическая Double elimination с сеткой лузеров. В сетке виннеров - БО3, в сетке лузеров - БО1, в суперфинале - БО5. Игрок, прошедший в суперфинал из верхней сетки, имеет +1 очко. Игрок из нижней сетки начинает с лузерпиком. """ + } springcup{ description = true maps = [["4p_biffys_peril"], @@ -315,6 +329,27 @@ deciders{ name = "Frenetic map pool" rules = """ """ } + freneticmappool{ + raceCount = 2 + description = true + maps =[["2p_battle_marshes"], + ["2p_fallen_city_[Rem]"], + ["2p_fata_morgana_[Rem]"], + ["2p_emerald_river"], + ["2p_quests_triumph"], + ["2p_shrine_of_excellion_[Rem]"], + ["2p_titan_fall_[Rem]"], + ["2p_tranquilitys_end_[Rem]"], + ["2p_fraziersdemise"], + ["2p_bloody_hell_[Ed]"], + ["2p_blood_river_[Rem]"], + ["2p_deadly_fun_archeology"], + ["2p_sugaroasis"], + ["2p_outer_reaches"], + ["2p_meeting_of_minds"]] + name = "Frenetic map pool" + rules = """ """ + } freneticmappool2{ raceCount = 2 description = true