Add fourth player, add 4x4 maps
@ -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)
|
||||
|
||||
|
||||
@ -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")
|
||||
|
||||
BIN
app/assets/images/maps/8p_glacier.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
app/assets/images/maps/8p_verdant_isles_ed.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
app/assets/images/maps/img_3.png
Normal file
|
After Width: | Height: | Size: 502 KiB |
BIN
app/assets/images/maps/img_4.png
Normal file
|
After Width: | Height: | Size: 502 KiB |
BIN
app/assets/images/maps/img_5.png
Normal file
|
After Width: | Height: | Size: 502 KiB |
@ -247,7 +247,7 @@ function getRaceVideoByNumber(number){
|
||||
|
||||
function renderRaces() {
|
||||
var resHtml = "";
|
||||
resHtml += "<div class='col-xs-4'><center><h2>First race</h2>";
|
||||
resHtml += "<div class='col-xs-3'><center><h2>First race</h2>";
|
||||
for(var i = 1; i <= 9; i++){
|
||||
var selected = "raceNotSelected";
|
||||
if($.cookie("race1") == i){
|
||||
@ -259,7 +259,7 @@ function renderRaces() {
|
||||
resHtml += "</center></div>";
|
||||
|
||||
if(raceCount >= 2){
|
||||
resHtml += "<div class='col-xs-4'><center><h2>Second race</h2>";
|
||||
resHtml += "<div class='col-xs-3'><center><h2>Second race</h2>";
|
||||
for(var i = 1; i <= 9; i++){
|
||||
var selected = "raceNotSelected";
|
||||
if($.cookie("race2") == i){
|
||||
@ -272,7 +272,7 @@ function renderRaces() {
|
||||
}
|
||||
|
||||
if(raceCount >= 3){
|
||||
resHtml += "<div class='col-xs-4'><center><h2>Third race</h2>";
|
||||
resHtml += "<div class='col-xs-3'><center><h2>Third race</h2>";
|
||||
for(var i = 1; i <= 9; i++){
|
||||
var selected = "raceNotSelected";
|
||||
var banned = "";
|
||||
@ -285,6 +285,20 @@ function renderRaces() {
|
||||
}
|
||||
resHtml += "</center></div>";
|
||||
}
|
||||
if(raceCount >= 4){
|
||||
resHtml += "<div class='col-xs-3'><center><h2>Fourth race</h2>";
|
||||
for(var i = 1; i <= 9; i++){
|
||||
var selected = "raceNotSelected";
|
||||
var banned = "";
|
||||
if($.cookie("race4") == i){
|
||||
selected = "raceSelected";
|
||||
banned = "bannedRace";
|
||||
selectedFourthRace = i;
|
||||
}
|
||||
resHtml += '<a href = "#" class="'+selected+' thirdRaceIcon" onclick="selectFourthRace(this, ' +i+')"><img class="raceIcon" src="'+getRaceImageByNumber(i)+'"></a> ';
|
||||
}
|
||||
resHtml += "</center></div>";
|
||||
}
|
||||
resHtml += "<div class='col-xs-4'></div>";
|
||||
resHtml += "<div style='clear: both;'></div></br>";
|
||||
|
||||
@ -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("<center>Waiting another player...</center>");
|
||||
}
|
||||
@ -407,6 +435,9 @@ function renderFinish(maps, firstPlayerInfo, secondPlayerInfo) {
|
||||
if(raceCount >= 3){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(firstPlayerInfo.selectedRaces.thirdRace)+"> ";
|
||||
}
|
||||
if(raceCount >= 4){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(firstPlayerInfo.selectedRaces.fourthRace)+"> ";
|
||||
}
|
||||
|
||||
resHtml += "<h2>" + secondPlayerInfo.name + "</h2>";
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(secondPlayerInfo.selectedRaces.firstRace)+"> ";
|
||||
@ -416,6 +447,9 @@ function renderFinish(maps, firstPlayerInfo, secondPlayerInfo) {
|
||||
if(raceCount >= 3){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(secondPlayerInfo.selectedRaces.thirdRace)+"> ";
|
||||
}
|
||||
if(raceCount >= 4){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(secondPlayerInfo.selectedRaces.fourthRace)+"> ";
|
||||
}
|
||||
|
||||
resHtml += "</center>"
|
||||
|
||||
@ -545,6 +579,9 @@ function renderPlayersAndStats(lobby) {
|
||||
if(raceCount > 2){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user1Info.selectedRaces.thirdRace)+"> ";
|
||||
}
|
||||
if(raceCount > 3){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user1Info.selectedRaces.fourthRace)+"> ";
|
||||
}
|
||||
resHtml += " <span style='font-size: 14px'>VS</span> ";
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user2Info.selectedRaces.firstRace)+">";
|
||||
if(raceCount > 1){
|
||||
@ -553,6 +590,9 @@ function renderPlayersAndStats(lobby) {
|
||||
if(raceCount > 2){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user2Info.selectedRaces.thirdRace)+"> ";
|
||||
}
|
||||
if(raceCount > 3){
|
||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user2Info.selectedRaces.fourthRace)+"> ";
|
||||
}
|
||||
break;
|
||||
case "Finish()":
|
||||
renderFinish(lobby.maps, lobby.user1Info, lobby.user2Info);
|
||||
|
||||
@ -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
|
||||
|
||||