Additional races
This commit is contained in:
parent
31ce4b7beb
commit
ecc69cd7d3
@ -48,7 +48,6 @@ class LobbieActor(hostUser: LobbyUser, deciderName: String) extends Actor with L
|
|||||||
private var secondPlayerSelectedRaces: Option[SelectedRaces] = None
|
private var secondPlayerSelectedRaces: Option[SelectedRaces] = None
|
||||||
|
|
||||||
|
|
||||||
private val isSolo: Boolean = Try(config.getBoolean(s"deciders.$deciderName.isSolo")).getOrElse(false)
|
|
||||||
private val mapsLobby: Set[DeciderMap] = {
|
private val mapsLobby: Set[DeciderMap] = {
|
||||||
val configMaps = config.getList(s"deciders.$deciderName.maps").asScala
|
val configMaps = config.getList(s"deciders.$deciderName.maps").asScala
|
||||||
configMaps.map(e => {
|
configMaps.map(e => {
|
||||||
@ -66,7 +65,6 @@ class LobbieActor(hostUser: LobbyUser, deciderName: String) extends Actor with L
|
|||||||
status.toString(),
|
status.toString(),
|
||||||
playerTurn,
|
playerTurn,
|
||||||
lobbyType.toString(),
|
lobbyType.toString(),
|
||||||
isSolo,
|
|
||||||
mapsLobby)),
|
mapsLobby)),
|
||||||
this.self)
|
this.self)
|
||||||
|
|
||||||
@ -78,16 +76,6 @@ class LobbieActor(hostUser: LobbyUser, deciderName: String) extends Actor with L
|
|||||||
// notify watchers
|
// notify watchers
|
||||||
logger.info(s"Ban map $mapName by ${sender.path.name}")
|
logger.info(s"Ban map $mapName by ${sender.path.name}")
|
||||||
|
|
||||||
if (isSolo) {
|
|
||||||
mapsLobby.find(p => p.map == mapName).foreach(m => m.isBanned = true)
|
|
||||||
if (isFinish) {
|
|
||||||
status = Finish()
|
|
||||||
} else {
|
|
||||||
status = Draft()
|
|
||||||
}
|
|
||||||
refreshAndBanMap(mapName)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (status == Draft()) {
|
if (status == Draft()) {
|
||||||
if ((playerTurn == 1 && sender == host.actorRef) ||
|
if ((playerTurn == 1 && sender == host.actorRef) ||
|
||||||
(playerTurn == 2 && secondPlayer.exists(_.actorRef == sender))) {
|
(playerTurn == 2 && secondPlayer.exists(_.actorRef == sender))) {
|
||||||
@ -227,7 +215,6 @@ class LobbieActor(hostUser: LobbyUser, deciderName: String) extends Actor with L
|
|||||||
status.toString(),
|
status.toString(),
|
||||||
playerTurn,
|
playerTurn,
|
||||||
lobbyType.toString(),
|
lobbyType.toString(),
|
||||||
isSolo,
|
|
||||||
mapsLobby)
|
mapsLobby)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +261,7 @@ case class ChangeIsNecronSelected(isSelected: Boolean)
|
|||||||
|
|
||||||
case object InfoQuery
|
case object InfoQuery
|
||||||
|
|
||||||
case class SelectedRaces(firstRace: Int, secondRace: Int, thirdRace: Int, fourthRace: Int)
|
case class SelectedRaces(mainRaces: List[Int], additionalRaces: List[Int])
|
||||||
|
|
||||||
case class UserInfo(name: String, isReady: Boolean, selectedRaces: Option[SelectedRaces] = None)
|
case class UserInfo(name: String, isReady: Boolean, selectedRaces: Option[SelectedRaces] = None)
|
||||||
|
|
||||||
@ -285,7 +272,6 @@ case class LobbyInfo(user1Info: UserInfo,
|
|||||||
status: String,
|
status: String,
|
||||||
playerTurn: BigDecimal,
|
playerTurn: BigDecimal,
|
||||||
selectedType: String,
|
selectedType: String,
|
||||||
isSolo: Boolean,
|
|
||||||
maps: Set[DeciderMap])
|
maps: Set[DeciderMap])
|
||||||
|
|
||||||
class LobbyStatus
|
class LobbyStatus
|
||||||
|
|||||||
@ -173,11 +173,10 @@ class UserActor(out: ActorRef,
|
|||||||
lobbieActor.foreach(lobby => lobby ! BanMap(map))
|
lobbieActor.foreach(lobby => lobby ! BanMap(map))
|
||||||
|
|
||||||
case Some("selectRace") =>
|
case Some("selectRace") =>
|
||||||
val firstRace = (json \ "raceFirst").as[Int]
|
logger.info("RACES: " + json.toString())
|
||||||
val secondRace = (json \ "raceSecond").as[Int]
|
val races = (json \ "mainRaces").as[List[Int]]
|
||||||
val thirdRace = (json \ "raceThird").as[Int]
|
val additionalRaces = (json \ "additionalRaces").as[List[Int]]
|
||||||
val fourthRace = (json \ "raceFourth").as[Int]
|
lobbieActor.foreach(lobby => lobby ! SelectedRaces(races, additionalRaces))
|
||||||
lobbieActor.foreach(lobby => lobby ! SelectedRaces(firstRace, secondRace, thirdRace, fourthRace))
|
|
||||||
|
|
||||||
case Some("getLobbies") =>
|
case Some("getLobbies") =>
|
||||||
logger.debug("Get all lobby request")
|
logger.debug("Get all lobby request")
|
||||||
|
|||||||
BIN
app/assets/images/maps/6p_gear.jpg
Normal file
BIN
app/assets/images/maps/6p_gear.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
BIN
app/assets/images/maps/6p_snowblind.jpg
Normal file
BIN
app/assets/images/maps/6p_snowblind.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
app/assets/images/maps/img.png
Normal file
BIN
app/assets/images/maps/img.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 565 KiB |
BIN
app/assets/images/maps/img_1.png
Normal file
BIN
app/assets/images/maps/img_1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 565 KiB |
BIN
app/assets/images/maps/img_2.png
Normal file
BIN
app/assets/images/maps/img_2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 565 KiB |
@ -3,13 +3,12 @@ var ws;
|
|||||||
var userName = ""
|
var userName = ""
|
||||||
|
|
||||||
var raceCount = $("#raceCount").html()
|
var raceCount = $("#raceCount").html()
|
||||||
var isSolo = $("#isSolo").html() === 'true'
|
var existAdditionalRaces = $("#existAdditionalRaces").html() === "true"
|
||||||
|
|
||||||
var isMuted = false;
|
var isMuted = false;
|
||||||
var isDraftStarted = false;
|
var isDraftStarted = false;
|
||||||
|
|
||||||
|
window.onload = function () {
|
||||||
window.onload = function() {
|
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -35,28 +34,23 @@ window.onload = function() {
|
|||||||
"click .title": "check" // Обработчик клика на кнопке "Проверить"
|
"click .title": "check" // Обработчик клика на кнопке "Проверить"
|
||||||
},
|
},
|
||||||
|
|
||||||
joinAsPlayer: function () {
|
render: function () {
|
||||||
this.elCount = "azaz" + getRandomInt(100000000);
|
|
||||||
this.render();
|
|
||||||
},
|
|
||||||
|
|
||||||
render: function() {
|
|
||||||
|
|
||||||
var lobbiesAsTableRows = _.reduce(this.lobbies, function (memo, lobby) {
|
var lobbiesAsTableRows = _.reduce(this.lobbies, function (memo, lobby) {
|
||||||
|
|
||||||
if ($("#deciderName").html() !== lobby.deciderName) return memo;
|
if ($("#deciderName").html() !== lobby.deciderName) return memo;
|
||||||
|
|
||||||
var joinButton = (lobby.status === "NotStarted()") ? '<button class="btn btn-primary join-as-player" onclick="joinDecider(\''+lobby.lobbyActorName+'\')">' +
|
var joinButton = (lobby.status === "NotStarted()") ? '<button class="btn btn-primary join-as-player" onclick="joinDecider(\'' + lobby.lobbyActorName + '\')">' +
|
||||||
'<img src="/assets/images/buttons/isAuto.png" style="height: 25px;"> Join lobby <img src="/assets/images/buttons/isAuto.png" style="height: 25px;">' +
|
'<img src="/assets/images/buttons/isAuto.png" style="height: 25px;"> Join lobby <img src="/assets/images/buttons/isAuto.png" style="height: 25px;">' +
|
||||||
'</button>' : "";
|
'</button>' : "";
|
||||||
var observerButton = '<button class="btn btn-success join-as-observer" onclick="observerDecider(\''+lobby.lobbyActorName+'\')">' +
|
var observerButton = '<button class="btn btn-success join-as-observer" onclick="observerDecider(\'' + lobby.lobbyActorName + '\')">' +
|
||||||
'<img src="/assets/images/buttons/Ulthwe.png" style="height: 25px;"> Observer <img src="/assets/images/buttons/Ulthwe.png" style="height: 25px;">' +
|
'<img src="/assets/images/buttons/Ulthwe.png" style="height: 25px;"> Observer <img src="/assets/images/buttons/Ulthwe.png" style="height: 25px;">' +
|
||||||
'</button>';
|
'</button>';
|
||||||
|
|
||||||
return memo + '<tr>\n' +
|
return memo + '<tr>\n' +
|
||||||
' <td>'+ lobby.user1Info.name.substring(0, 20) +'</td>\n' +
|
' <td>' + lobby.user1Info.name.substring(0, 20) + '</td>\n' +
|
||||||
' <td>'+ lobby.user2Info.name.substring(0, 20) +'</td>\n' +
|
' <td>' + lobby.user2Info.name.substring(0, 20) + '</td>\n' +
|
||||||
' <td>'+ lobby.status +'</td>\n' +
|
' <td>' + lobby.status + '</td>\n' +
|
||||||
' <td>' + joinButton + ' ' + observerButton +
|
' <td>' + joinButton + ' ' + observerButton +
|
||||||
' </td>' +
|
' </td>' +
|
||||||
'</tr>';
|
'</tr>';
|
||||||
@ -83,7 +77,7 @@ window.onload = function() {
|
|||||||
$("#lobbiesList").append(lobbyList.$el);
|
$("#lobbiesList").append(lobbyList.$el);
|
||||||
lobbyList.render();
|
lobbyList.render();
|
||||||
|
|
||||||
$("#createDecider").click(function(event) {
|
$("#createDecider").click(function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
isObserver = false;
|
isObserver = false;
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
@ -92,7 +86,7 @@ window.onload = function() {
|
|||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#submitmsg").click(function(event) {
|
$("#submitmsg").click(function (event) {
|
||||||
sendMessage();
|
sendMessage();
|
||||||
});
|
});
|
||||||
$("#usermsg").on('keyup', function (e) {
|
$("#usermsg").on('keyup', function (e) {
|
||||||
@ -101,17 +95,17 @@ window.onload = function() {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#mute").click(function(event) {
|
$("#mute").click(function (event) {
|
||||||
if(isMuted){
|
if (isMuted) {
|
||||||
isMuted = false;
|
isMuted = false;
|
||||||
$("#mute").html("🔊");
|
$("#mute").html("🔊");
|
||||||
}else{
|
} else {
|
||||||
isMuted = true;
|
isMuted = true;
|
||||||
$("#mute").html("🔈");
|
$("#mute").html("🔈");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#exit").click(function(event) {
|
$("#exit").click(function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "leaveDecider"
|
type: "leaveDecider"
|
||||||
@ -121,13 +115,13 @@ window.onload = function() {
|
|||||||
$(".navbar").show();
|
$(".navbar").show();
|
||||||
});
|
});
|
||||||
|
|
||||||
function requestName(){
|
function requestName() {
|
||||||
if($.cookie('user') === undefined || $.cookie('user')=== "null"|| $.cookie('user')=== ""){
|
if ($.cookie('user') === undefined || $.cookie('user') === "null" || $.cookie('user') === "") {
|
||||||
var result = prompt("Enter nickname: ", );
|
var result = prompt("Enter nickname: ",);
|
||||||
$.cookie('user', result, { expires: 1337 });
|
$.cookie('user', result, {expires: 1337});
|
||||||
userName = result;
|
userName = result;
|
||||||
requestName();
|
requestName();
|
||||||
}else{
|
} else {
|
||||||
userName = $.cookie('user');
|
userName = $.cookie('user');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -138,15 +132,15 @@ window.onload = function() {
|
|||||||
$("#playerName").html(userName);
|
$("#playerName").html(userName);
|
||||||
|
|
||||||
ws = new WebSocket($("body").data("ws-url"));
|
ws = new WebSocket($("body").data("ws-url"));
|
||||||
ws.onmessage = function(event) {
|
ws.onmessage = function (event) {
|
||||||
var message;
|
var message;
|
||||||
message = JSON.parse(event.data);
|
message = JSON.parse(event.data);
|
||||||
switch (message.type) {
|
switch (message.type) {
|
||||||
case "refreshLobby":
|
case "refreshLobby":
|
||||||
if(message.lobby.status === "SelectRace()" && (!isObserver)){
|
if (message.lobby.status === "SelectRace()" && (!isObserver)) {
|
||||||
isDraftStarted = false;
|
isDraftStarted = false;
|
||||||
renderRaces();
|
renderRaces();
|
||||||
}else {
|
} else {
|
||||||
renderMaps(message.lobby.maps, message.lobby.status);
|
renderMaps(message.lobby.maps, message.lobby.status);
|
||||||
}
|
}
|
||||||
renderPlayersAndStats(message.lobby);
|
renderPlayersAndStats(message.lobby);
|
||||||
@ -154,7 +148,7 @@ window.onload = function() {
|
|||||||
case "switchToLobby":
|
case "switchToLobby":
|
||||||
console.log(message);
|
console.log(message);
|
||||||
switchToLobby(message.lobby.maps, message.lobby.status);
|
switchToLobby(message.lobby.maps, message.lobby.status);
|
||||||
if(!isSolo) renderPlayersAndStats(message.lobby);
|
renderPlayersAndStats(message.lobby);
|
||||||
break;
|
break;
|
||||||
case "sendMessage":
|
case "sendMessage":
|
||||||
console.log(message);
|
console.log(message);
|
||||||
@ -176,6 +170,7 @@ window.onload = function() {
|
|||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
ws.onopen = function () {
|
ws.onopen = function () {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "userName",
|
type: "userName",
|
||||||
@ -186,7 +181,7 @@ window.onload = function() {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
var timerId = setInterval(() =>
|
setInterval(() =>
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "getLobbies"
|
type: "getLobbies"
|
||||||
})), 2000);
|
})), 2000);
|
||||||
@ -194,9 +189,9 @@ window.onload = function() {
|
|||||||
|
|
||||||
function changeNick() {
|
function changeNick() {
|
||||||
result = prompt("Введите ник", $.cookie('user'));
|
result = prompt("Введите ник", $.cookie('user'));
|
||||||
if(result == null) return;
|
if (result == null) return;
|
||||||
result = result.substr(0, 20);
|
result = result.substr(0, 20);
|
||||||
$.cookie('user', result, { expires: 7 });
|
$.cookie('user', result, {expires: 7});
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "userName",
|
type: "userName",
|
||||||
name: $.cookie('user')
|
name: $.cookie('user')
|
||||||
@ -207,7 +202,6 @@ function changeNick() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// -----ф-ии прихода с сервера
|
// -----ф-ии прихода с сервера
|
||||||
|
|
||||||
function switchToLobby(maps, status) {
|
function switchToLobby(maps, status) {
|
||||||
@ -231,89 +225,77 @@ function disconnectLobby(error) {
|
|||||||
|
|
||||||
// ---------------Выбор рас --------------
|
// ---------------Выбор рас --------------
|
||||||
|
|
||||||
function getRaceImageByNumber(number){
|
function getRaceImageByNumber(number) {
|
||||||
switch (number) {
|
switch (number) {
|
||||||
case 1: return "/assets/images/raceIcons/SM.gif";
|
case 1:
|
||||||
case 2: return "/assets/images/raceIcons/Chaos.gif";
|
return "/assets/images/raceIcons/SM.gif";
|
||||||
case 3: return "/assets/images/raceIcons/Eldar.gif";
|
case 2:
|
||||||
case 4: return "/assets/images/raceIcons/Orks.gif";
|
return "/assets/images/raceIcons/Chaos.gif";
|
||||||
case 5: return "/assets/images/raceIcons/IG.gif";
|
case 3:
|
||||||
case 6: return "/assets/images/raceIcons/Nec.gif";
|
return "/assets/images/raceIcons/Eldar.gif";
|
||||||
case 7: return "/assets/images/raceIcons/Tau.gif";
|
case 4:
|
||||||
case 8: return "/assets/images/raceIcons/Sob.gif";
|
return "/assets/images/raceIcons/Orks.gif";
|
||||||
case 9: return "/assets/images/raceIcons/De.gif";
|
case 5:
|
||||||
|
return "/assets/images/raceIcons/IG.gif";
|
||||||
|
case 6:
|
||||||
|
return "/assets/images/raceIcons/Nec.gif";
|
||||||
|
case 7:
|
||||||
|
return "/assets/images/raceIcons/Tau.gif";
|
||||||
|
case 8:
|
||||||
|
return "/assets/images/raceIcons/Sob.gif";
|
||||||
|
case 9:
|
||||||
|
return "/assets/images/raceIcons/De.gif";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRaceVideoByNumber(number){
|
function getRaceVideoByNumber(number) {
|
||||||
switch (number) {
|
switch (number) {
|
||||||
case 1: return "/assets/video/races/SM.mp4";
|
case 1:
|
||||||
case 2: return "/assets/video/races/Chaos.mp4";
|
return "/assets/video/races/SM.mp4";
|
||||||
case 3: return "/assets/video/races/Eldar.mp4";
|
case 2:
|
||||||
case 4: return "/assets/video/races/Orks.mp4";
|
return "/assets/video/races/Chaos.mp4";
|
||||||
case 5: return "/assets/video/races/IG.mp4";
|
case 3:
|
||||||
case 6: return "/assets/video/races/Nec.mp4";
|
return "/assets/video/races/Eldar.mp4";
|
||||||
case 7: return "/assets/video/races/Tau.mp4";
|
case 4:
|
||||||
case 8: return "/assets/video/races/Sob.mp4";
|
return "/assets/video/races/Orks.mp4";
|
||||||
case 9: return "/assets/video/races/SM.mp4";
|
case 5:
|
||||||
|
return "/assets/video/races/IG.mp4";
|
||||||
|
case 6:
|
||||||
|
return "/assets/video/races/Nec.mp4";
|
||||||
|
case 7:
|
||||||
|
return "/assets/video/races/Tau.mp4";
|
||||||
|
case 8:
|
||||||
|
return "/assets/video/races/Sob.mp4";
|
||||||
|
case 9:
|
||||||
|
return "/assets/video/races/SM.mp4";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderRaces() {
|
function renderRaces() {
|
||||||
|
|
||||||
|
function getRaceSelectHtml(raceType, raceArray) {
|
||||||
var resHtml = "";
|
var resHtml = "";
|
||||||
resHtml += "<div class='col-xs-3'><center><h2>First race</h2>";
|
for(var raceNum = 1; raceNum <= raceCount; raceNum++){
|
||||||
for(var i = 1; i <= 9; i++){
|
resHtml += "<div class='col-xs-4'><center><h3>" + raceType + " race " + raceNum + "</h3>";
|
||||||
|
for (var i = 1; i <= 9; i++) {
|
||||||
var selected = "raceNotSelected";
|
var selected = "raceNotSelected";
|
||||||
if($.cookie("race1") == i){
|
if ($.cookie("race-" + raceType + "-" + raceNum) == i) {
|
||||||
selected = "raceSelected";
|
selected = "raceSelected";
|
||||||
selectedMainRace = i;
|
console.log("setted: " + i);
|
||||||
|
raceArray[raceNum] = i;
|
||||||
}
|
}
|
||||||
resHtml += '<a href = "#" class="'+selected+' mainRaceIcon" onclick="selectMainRace(this, ' +i+')"><img class="raceIcon" src="'+getRaceImageByNumber(i)+'"></a> ';
|
let raceIconClass = "raceIcon-" + raceNum + "-" + raceType;
|
||||||
|
resHtml += '<a href = "#" class="' + selected + ' ' + raceIconClass + '"' +
|
||||||
|
' onclick="selectRace(this, '+i+', '+raceNum+', \''+raceType+'\')"><img class="raceIcon" src="' + getRaceImageByNumber(i) + '"></a> ';
|
||||||
}
|
}
|
||||||
resHtml += "</center></div>";
|
resHtml += "</center></div>";
|
||||||
|
|
||||||
if(raceCount >= 2){
|
|
||||||
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){
|
|
||||||
selected = "raceSelected";
|
|
||||||
selectedSecondRace = i;
|
|
||||||
}
|
}
|
||||||
resHtml += '<a href = "#" class="'+selected+' additionalRaceIcon" onclick="selectSecondRace(this, ' +i+')"><img class="raceIcon" src="'+getRaceImageByNumber(i)+'"></a> ';
|
return resHtml;
|
||||||
}
|
|
||||||
resHtml += "</center></div>";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(raceCount >= 3){
|
var resHtml = "";
|
||||||
resHtml += "<div class='col-xs-3'><center><h2>Third race</h2>";
|
resHtml += getRaceSelectHtml("main", selectedRaces);
|
||||||
for(var i = 1; i <= 9; i++){
|
if(existAdditionalRaces) resHtml += getRaceSelectHtml("additional", selectedAdditionalRaces);
|
||||||
var selected = "raceNotSelected";
|
|
||||||
var banned = "";
|
|
||||||
if($.cookie("race3") == i){
|
|
||||||
selected = "raceSelected";
|
|
||||||
banned = "bannedRace";
|
|
||||||
selectedThirdRace = i;
|
|
||||||
}
|
|
||||||
resHtml += '<a href = "#" class="'+selected+' thirdRaceIcon" onclick="selectThirdRace(this, ' +i+')"><img class="raceIcon" src="'+getRaceImageByNumber(i)+'"></a> ';
|
|
||||||
}
|
|
||||||
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+' fourthRaceIcon" 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>";
|
resHtml += "<div style='clear: both;'></div></br>";
|
||||||
|
|
||||||
resHtml += "<center><button id = 'selectRace' class='btn btn-primary' disabled onclick='sendSelectedRacesToServer()'>OK</button></center>"
|
resHtml += "<center><button id = 'selectRace' class='btn btn-primary' disabled onclick='sendSelectedRacesToServer()'>OK</button></center>"
|
||||||
@ -321,28 +303,19 @@ function renderRaces() {
|
|||||||
checkRaceSelectFinish();
|
checkRaceSelectFinish();
|
||||||
}
|
}
|
||||||
|
|
||||||
var selectedMainRace = 0;
|
|
||||||
var selectedSecondRace = 0;
|
|
||||||
var selectedThirdRace = 0;
|
|
||||||
var selectedFourthRace = 0;
|
|
||||||
|
|
||||||
function selectMainRace(button, race){
|
var selectedRaces = [];
|
||||||
selectedMainRace = race;
|
var selectedAdditionalRaces = [];
|
||||||
$.cookie("race1", race, { expires: 1 });
|
|
||||||
_.each($(".mainRaceIcon"), function (el){
|
|
||||||
$(el).removeClass("raceSelected");
|
|
||||||
$(el).addClass("raceNotSelected");
|
|
||||||
});
|
|
||||||
$(button).removeClass("raceNotSelected");
|
|
||||||
$(button).addClass("raceSelected");
|
|
||||||
checkRaceSelectFinish();
|
|
||||||
|
|
||||||
}
|
function selectRace(button, race, raceNum, raceType) {
|
||||||
|
if(raceType === "main"){
|
||||||
|
selectedRaces[raceNum] = race;
|
||||||
|
}else{
|
||||||
|
selectedAdditionalRaces[raceNum] = race;
|
||||||
|
}
|
||||||
|
|
||||||
function selectSecondRace(button, race){
|
$.cookie("race-" + raceType + "-" + raceNum, race, {expires: 1});
|
||||||
selectedSecondRace = race;
|
_.each($(".raceIcon-" + raceNum + "-" + raceType), function (el) {
|
||||||
$.cookie("race2", race, { expires: 1 });
|
|
||||||
_.each($(".additionalRaceIcon"), function (el){
|
|
||||||
$(el).removeClass("raceSelected");
|
$(el).removeClass("raceSelected");
|
||||||
$(el).addClass("raceNotSelected");
|
$(el).addClass("raceNotSelected");
|
||||||
});
|
});
|
||||||
@ -351,44 +324,18 @@ function selectSecondRace(button, race){
|
|||||||
checkRaceSelectFinish();
|
checkRaceSelectFinish();
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectThirdRace(button, race){
|
function checkRaceSelectFinish() {
|
||||||
selectedThirdRace = race;
|
if(selectedRaces.filter(x => x).length >= raceCount){
|
||||||
$.cookie("race3", race, { expires: 1 });
|
$("#selectRace").removeAttr("disabled");
|
||||||
_.each($(".thirdRaceIcon"), function (el){
|
|
||||||
$(el).removeClass("raceSelected");
|
|
||||||
$(el).addClass("raceNotSelected");
|
|
||||||
});
|
|
||||||
$(button).removeClass("raceNotSelected");
|
|
||||||
$(button).addClass("raceSelected");
|
|
||||||
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) && (raceCount < 4 || selectedFourthRace !== 0)){
|
|
||||||
$("#selectRace").removeAttr("disabled")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendSelectedRacesToServer(){
|
function sendSelectedRacesToServer() {
|
||||||
|
console.log(selectedRaces);
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "selectRace",
|
type: "selectRace",
|
||||||
raceFirst: selectedMainRace,
|
mainRaces: selectedRaces.filter(x => x),
|
||||||
raceSecond: selectedSecondRace,
|
additionalRaces: selectedAdditionalRaces.filter(x => x)
|
||||||
raceThird: selectedThirdRace,
|
|
||||||
raceFourth: selectedFourthRace
|
|
||||||
}));
|
}));
|
||||||
$("#mapList").html("<center>Waiting another player...</center>");
|
$("#mapList").html("<center>Waiting another player...</center>");
|
||||||
}
|
}
|
||||||
@ -402,24 +349,21 @@ function renderMaps(maps, lobbyStatus) {
|
|||||||
|
|
||||||
var banHtml = "";
|
var banHtml = "";
|
||||||
var banClass = "";
|
var banClass = "";
|
||||||
if(map.isBanned){
|
if (map.isBanned) {
|
||||||
banHtml = "<div class = 'banX'>✕</div>";
|
banHtml = "<div class = 'banX'>✕</div>";
|
||||||
banClass = "bannedMap";
|
banClass = "bannedMap";
|
||||||
}
|
}
|
||||||
if(lobbyStatus === "NotStarted()" && !isSolo){
|
|
||||||
banClass = "bannedMap";
|
|
||||||
}
|
|
||||||
|
|
||||||
var title = ""
|
var title = ""
|
||||||
|
|
||||||
if(map.description != null){
|
if (map.description != null) {
|
||||||
title = "title='"+map.description+"'";
|
title = "title='" + map.description + "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
resHtml = resHtml + '<div class="col-xs-4 col-md-3 col-lg-2"><button class = "mapSelect" onmousedown="banMap(\''+map.map+'\')">'+
|
resHtml = resHtml + '<div class="col-xs-4 col-md-3 col-lg-2"><button class = "mapSelect" onmousedown="banMap(\'' + map.map + '\')">' +
|
||||||
'<div class="mapImageAndText '+banClass+'">' +
|
'<div class="mapImageAndText ' + banClass + '">' +
|
||||||
'<img class="img-rounded center-block" '+title+' style="width:128px;" src="/assets/images/maps/'+encodeURI(map.map)+'.jpg">' +
|
'<img class="img-rounded center-block" ' + title + ' style="width:128px;" src="/assets/images/maps/' + encodeURI(map.map) + '.jpg">' +
|
||||||
'</div>'+convertMapName(map.map)+
|
'</div>' + convertMapName(map.map) +
|
||||||
banHtml + '</button></div>';
|
banHtml + '</button></div>';
|
||||||
})
|
})
|
||||||
$("#mapList").html(resHtml);
|
$("#mapList").html(resHtml);
|
||||||
@ -431,43 +375,17 @@ function renderFinish(maps, firstPlayerInfo, secondPlayerInfo) {
|
|||||||
var resHtml = "<center>";
|
var resHtml = "<center>";
|
||||||
|
|
||||||
_.each(maps, function (map) {
|
_.each(maps, function (map) {
|
||||||
if(!map.isBanned){
|
if (!map.isBanned) {
|
||||||
resHtml = resHtml + '<div class="col-xs-4 col-md-3 col-lg-2"><button class = "mapSelect" >'+
|
resHtml = resHtml + '<div class="col-xs-4 col-md-3 col-lg-2"><button class = "mapSelect" >' +
|
||||||
'<div class="mapImageAndText ">' +
|
'<div class="mapImageAndText ">' +
|
||||||
'<img class="img-rounded center-block" style="width:128px;" src="/assets/images/maps/'+encodeURI(map.map)+'.jpg">' +
|
'<img class="img-rounded center-block" style="width:128px;" src="/assets/images/maps/' + encodeURI(map.map) + '.jpg">' +
|
||||||
'</div>'+convertMapName(map.map)+ '</button></div>';
|
'</div>' + convertMapName(map.map) + '</button></div>';
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
resHtml += "<div style='clear: both;'>";
|
resHtml += "<div style='clear: both;'>";
|
||||||
|
resHtml += getRenderRaces(firstPlayerInfo.selectedRaces, secondPlayerInfo.selectedRaces);
|
||||||
if(!isSolo){
|
resHtml += "</center>";
|
||||||
resHtml += "<h2>" + firstPlayerInfo.name + "</h2>";
|
|
||||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(firstPlayerInfo.selectedRaces.firstRace)+"> ";
|
|
||||||
if(raceCount >= 2){
|
|
||||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(firstPlayerInfo.selectedRaces.secondRace)+"> ";
|
|
||||||
}
|
|
||||||
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)+"> ";
|
|
||||||
if(raceCount >= 2){
|
|
||||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(secondPlayerInfo.selectedRaces.secondRace)+"> ";
|
|
||||||
}
|
|
||||||
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>"
|
|
||||||
|
|
||||||
$("#mapList").html(resHtml);
|
$("#mapList").html(resHtml);
|
||||||
}
|
}
|
||||||
@ -480,30 +398,30 @@ function renderPlayersAndStats(lobby) {
|
|||||||
var notReadyImg = "<img src='/assets/images/buttons/isNotAuto.png' class='readyImg'/>";
|
var notReadyImg = "<img src='/assets/images/buttons/isNotAuto.png' class='readyImg'/>";
|
||||||
var warningClass = (lobby.user2Info.name !== "") ? "warningButton" : "";
|
var warningClass = (lobby.user2Info.name !== "") ? "warningButton" : "";
|
||||||
|
|
||||||
if(lobby.user1Info.name === userName){
|
if (lobby.user1Info.name === userName) {
|
||||||
if(lobby.user1Info.isReady){
|
if (lobby.user1Info.isReady) {
|
||||||
player1ReadyBtn = "<button class='btn btn-default' onclick='setNotReady()'>"+readyImg+" Ready "+readyImg+"</button>"
|
player1ReadyBtn = "<button class='btn btn-default' onclick='setNotReady()'>" + readyImg + " Ready " + readyImg + "</button>"
|
||||||
}else{
|
} else {
|
||||||
player1ReadyBtn = "<button class='btn btn-default "+warningClass+"' onclick='setReady()'>"+notReadyImg+" Not ready "+notReadyImg+"</button>"
|
player1ReadyBtn = "<button class='btn btn-default " + warningClass + "' onclick='setReady()'>" + notReadyImg + " Not ready " + notReadyImg + "</button>"
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
if(lobby.user1Info.isReady){
|
if (lobby.user1Info.isReady) {
|
||||||
player1ReadyBtn = readyImg
|
player1ReadyBtn = readyImg
|
||||||
}else{
|
} else {
|
||||||
player1ReadyBtn = notReadyImg
|
player1ReadyBtn = notReadyImg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(lobby.user2Info.name === userName){
|
if (lobby.user2Info.name === userName) {
|
||||||
if(lobby.user2Info.isReady){
|
if (lobby.user2Info.isReady) {
|
||||||
player2ReadyBtn = "<button class='btn btn-default' onclick='setNotReady()'>"+readyImg+" Ready "+readyImg+"</button>"
|
player2ReadyBtn = "<button class='btn btn-default' onclick='setNotReady()'>" + readyImg + " Ready " + readyImg + "</button>"
|
||||||
}else{
|
} else {
|
||||||
player2ReadyBtn = "<button class='btn btn-default "+warningClass+"' onclick='setReady()'>"+notReadyImg+" Not ready "+notReadyImg+"</button>"
|
player2ReadyBtn = "<button class='btn btn-default " + warningClass + "' onclick='setReady()'>" + notReadyImg + " Not ready " + notReadyImg + "</button>"
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(lobby.user2Info.isReady){
|
if (lobby.user2Info.isReady) {
|
||||||
player2ReadyBtn = readyImg
|
player2ReadyBtn = readyImg
|
||||||
}else{
|
} else {
|
||||||
player2ReadyBtn = notReadyImg
|
player2ReadyBtn = notReadyImg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -521,7 +439,7 @@ function renderPlayersAndStats(lobby) {
|
|||||||
var last7Selected = "";
|
var last7Selected = "";
|
||||||
|
|
||||||
var isNecronsSelected = "";
|
var isNecronsSelected = "";
|
||||||
if(lobby.isNecrons) isNecronsSelected = "checked";
|
if (lobby.isNecrons) isNecronsSelected = "checked";
|
||||||
|
|
||||||
switch (lobby.selectedType) {
|
switch (lobby.selectedType) {
|
||||||
case "Last1()":
|
case "Last1()":
|
||||||
@ -545,77 +463,52 @@ function renderPlayersAndStats(lobby) {
|
|||||||
console.log(lobby.status);
|
console.log(lobby.status);
|
||||||
switch (lobby.status) {
|
switch (lobby.status) {
|
||||||
case "NotStarted()":
|
case "NotStarted()":
|
||||||
resHtml = "<div style='float: left; padding-top: 10px;'> <div>" + lobby.user1Info.name + ": " + player1ReadyBtn +"</div><br/>"
|
resHtml = "<div style='float: left; padding-top: 10px;'> <div>" + lobby.user1Info.name + ": " + player1ReadyBtn + "</div><br/>"
|
||||||
if(lobby.user2Info.name !== ""){
|
if (lobby.user2Info.name !== "") {
|
||||||
var kickBtn = ""
|
var kickBtn = ""
|
||||||
if(lobby.user1Info.name === userName){
|
if (lobby.user1Info.name === userName) {
|
||||||
kickBtn = " - <button class='btn btn-danger' onclick='kickSecondPlayer()'>Kick</button>";
|
kickBtn = " - <button class='btn btn-danger' onclick='kickSecondPlayer()'>Kick</button>";
|
||||||
}
|
}
|
||||||
resHtml += "<div>" + lobby.user2Info.name + ": " + player2ReadyBtn + kickBtn + "</div>"
|
resHtml += "<div>" + lobby.user2Info.name + ": " + player2ReadyBtn + kickBtn + "</div>"
|
||||||
}else{
|
} else {
|
||||||
resHtml += "<div>waiting 2-nd player...</div>"
|
resHtml += "<div>waiting 2-nd player...</div>"
|
||||||
}
|
}
|
||||||
|
|
||||||
var disabledText = "";
|
var disabledText = "";
|
||||||
|
|
||||||
|
|
||||||
if(lobby.user1Info.name !== userName){
|
if (lobby.user1Info.name !== userName) {
|
||||||
disabledText = "disabled";
|
disabledText = "disabled";
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: here from config
|
//TODO: here from config
|
||||||
resHtml += "<br/><select class=\"form-control\" id = 'deciderOption' onChange='changeLobbyType()' "+disabledText+" >" +
|
resHtml += "<br/><select class=\"form-control\" id = 'deciderOption' onChange='changeLobbyType()' " + disabledText + " >" +
|
||||||
"<option "+last1Selected+" value = 'last1'>Play on last map</option>" +
|
"<option " + last1Selected + " value = 'last1'>Play on last map</option>" +
|
||||||
"<option "+last3Selected+" value = 'last3'>Play on last 3 maps</option>" +
|
"<option " + last3Selected + " value = 'last3'>Play on last 3 maps</option>" +
|
||||||
"<option "+last5Selected+" value = 'last5'>Play on last 5 maps</option>" +
|
"<option " + last5Selected + " value = 'last5'>Play on last 5 maps</option>" +
|
||||||
"<option "+last7Selected+" value = 'last7'>Play on last 7 maps</option>" +
|
"<option " + last7Selected + " value = 'last7'>Play on last 7 maps</option>" +
|
||||||
"</select>";
|
"</select>";
|
||||||
|
|
||||||
if(lobby.user1Info.name !== userName && lobby.user2Info.name !== userName){
|
if (lobby.user1Info.name !== userName && lobby.user2Info.name !== userName) {
|
||||||
disabledText = "disabled";
|
disabledText = "disabled";
|
||||||
}else{
|
} else {
|
||||||
disabledText = "";
|
disabledText = "";
|
||||||
}
|
}
|
||||||
/*for(var i = 1; i <= 9; i++){
|
|
||||||
resHtml += '<a href = "#" class="raceNotSelected mainRaceIcon" style="position: absolute; z-index: -1;"><img class="raceIcon" src="'+getRaceImageByNumber(i)+'"></a> ';
|
|
||||||
}*/
|
|
||||||
resHtml += "</div>";
|
resHtml += "</div>";
|
||||||
break;
|
break;
|
||||||
case "SelectRace()":
|
case "SelectRace()":
|
||||||
|
|
||||||
resHtml = "<center>"+lobby.user1Info.name + " vs " + lobby.user2Info.name + " - " +lobbyTypeText+ "<br/> players select races</center>";
|
resHtml = "<center>" + lobby.user1Info.name + " vs " + lobby.user2Info.name + " - " + lobbyTypeText + "<br/> players select races</center>";
|
||||||
break;
|
break;
|
||||||
case "Draft()":
|
case "Draft()":
|
||||||
if(!isDraftStarted){
|
if (!isDraftStarted) {
|
||||||
isDraftStarted = true;
|
isDraftStarted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!isSolo){
|
|
||||||
var playerTurn = (lobby.playerTurn === 1) ? lobby.user1Info.name : lobby.user2Info.name
|
var playerTurn = (lobby.playerTurn === 1) ? lobby.user1Info.name : lobby.user2Info.name
|
||||||
resHtml = "<center>"+lobby.user1Info.name + " vs " + lobby.user2Info.name + " - " +lobbyTypeText+ "<br/><b>" + playerTurn +"</b> turn</center>";
|
resHtml = "<center><br/>";
|
||||||
resHtml += "<center><img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user1Info.selectedRaces.firstRace)+"> ";
|
resHtml += getRenderRaces(lobby.user1Info, lobby.user2Info);
|
||||||
if(raceCount > 1){
|
resHtml += "<br/> <b>" + playerTurn + "</b> turn" + "</center>";
|
||||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user1Info.selectedRaces.secondRace)+"> ";
|
|
||||||
}
|
|
||||||
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){
|
|
||||||
resHtml += "<img class=\"raceIcon\" src="+getRaceImageByNumber(lobby.user2Info.selectedRaces.secondRace)+"> ";
|
|
||||||
}
|
|
||||||
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;
|
break;
|
||||||
case "Finish()":
|
case "Finish()":
|
||||||
renderFinish(lobby.maps, lobby.user1Info, lobby.user2Info);
|
renderFinish(lobby.maps, lobby.user1Info, lobby.user2Info);
|
||||||
@ -627,15 +520,36 @@ function renderPlayersAndStats(lobby) {
|
|||||||
$("#playersStatsList").html(resHtml);
|
$("#playersStatsList").html(resHtml);
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMessageToChat(message){
|
function getRenderRaces(userInfo1, userInfo2) {
|
||||||
|
|
||||||
|
function getRacesBlock(playerRaces, name){
|
||||||
|
let resHtml = "<div style='display: inline-block; border: black 1px solid; background-color: #e3e3e3;'>" + "<h4>" + name + "</h4>";
|
||||||
|
resHtml += "main:";
|
||||||
|
playerRaces.mainRaces.forEach((raceId) =>
|
||||||
|
resHtml += "<img class=\"raceIcon\" src=" + getRaceImageByNumber(raceId) + "> ");
|
||||||
|
resHtml += "<br/> addt:";
|
||||||
|
playerRaces.additionalRaces.forEach((raceId) =>
|
||||||
|
resHtml += "<img class=\"raceIcon\" src=" + getRaceImageByNumber(raceId) + "> ");
|
||||||
|
resHtml += "</div>";
|
||||||
|
return resHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
let resHtml = "";
|
||||||
|
resHtml += getRacesBlock(userInfo1.selectedRaces, userInfo1.name);
|
||||||
|
resHtml += "<div style='width: 100px; font-size: 24px; display: inline-block;'><b>VS</b></div>";
|
||||||
|
resHtml += getRacesBlock(userInfo2.selectedRaces, userInfo2.name);
|
||||||
|
return resHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
function addMessageToChat(message) {
|
||||||
var messageHtml = "<div class='msgln'> <b>" + message.userName + "</b>: " + message.message + "<br></div>";
|
var messageHtml = "<div class='msgln'> <b>" + message.userName + "</b>: " + message.message + "<br></div>";
|
||||||
var chatBox = $("#chatbox");
|
var chatBox = $("#chatbox");
|
||||||
chatBox.append(messageHtml);
|
chatBox.append(messageHtml);
|
||||||
chatBox.scrollTop(40000);
|
chatBox.scrollTop(40000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleMapBanEvent(message){
|
function handleMapBanEvent(message) {
|
||||||
if(!isMuted){
|
if (!isMuted) {
|
||||||
var audioPick = new Audio('/assets/sound/pick.mp3.mpeg');
|
var audioPick = new Audio('/assets/sound/pick.mp3.mpeg');
|
||||||
audioPick.volume = 0.1;
|
audioPick.volume = 0.1;
|
||||||
audioPick.play();
|
audioPick.play();
|
||||||
@ -647,26 +561,26 @@ function handleMapBanEvent(message){
|
|||||||
chatBox.scrollTop(40000);
|
chatBox.scrollTop(40000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function banMap(map){
|
function banMap(map) {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "banMap",
|
type: "banMap",
|
||||||
map: map
|
map: map
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function setReady(){
|
function setReady() {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "setReady"
|
type: "setReady"
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function setNotReady(){
|
function setNotReady() {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "setNotReady"
|
type: "setNotReady"
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeLobbyType(){
|
function changeLobbyType() {
|
||||||
var lobbyType = $("#deciderOption").val();
|
var lobbyType = $("#deciderOption").val();
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "changeLobbyType",
|
type: "changeLobbyType",
|
||||||
@ -674,7 +588,7 @@ function changeLobbyType(){
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeIsNecronSelected(){
|
function changeIsNecronSelected() {
|
||||||
var isNecronSelected = $("#isNecron").is(':checked');
|
var isNecronSelected = $("#isNecron").is(':checked');
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "changeIsNecronSelected",
|
type: "changeIsNecronSelected",
|
||||||
@ -682,7 +596,7 @@ function changeIsNecronSelected(){
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function joinDecider(actorName){
|
function joinDecider(actorName) {
|
||||||
isObserver = false;
|
isObserver = false;
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "joinDecider",
|
type: "joinDecider",
|
||||||
@ -690,7 +604,7 @@ function joinDecider(actorName){
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function observerDecider(actorName){
|
function observerDecider(actorName) {
|
||||||
isObserver = true;
|
isObserver = true;
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "observerDecider",
|
type: "observerDecider",
|
||||||
@ -698,11 +612,11 @@ function observerDecider(actorName){
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function sendMessage(){
|
function sendMessage() {
|
||||||
var userInput = $("#usermsg");
|
var userInput = $("#usermsg");
|
||||||
var message = userInput.val();
|
var message = userInput.val();
|
||||||
userInput.val("");
|
userInput.val("");
|
||||||
if(message !== ""){
|
if (message !== "") {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "sendMessage",
|
type: "sendMessage",
|
||||||
message: message
|
message: message
|
||||||
@ -710,16 +624,16 @@ function sendMessage(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function kickSecondPlayer(){
|
function kickSecondPlayer() {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type: "kickSecondPlayer"
|
type: "kickSecondPlayer"
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertMapName (techMapName) {
|
function convertMapName(techMapName) {
|
||||||
var mapPlayerSize = techMapName.charAt(0);
|
var mapPlayerSize = techMapName.charAt(0);
|
||||||
var mapName = techMapName.replace(mapPlayerSize + "p_", "").replaceAll("_", " ") +
|
var mapName = techMapName.replace(mapPlayerSize + "p_", "").replaceAll("_", " ") +
|
||||||
" ("+mapPlayerSize+")";
|
" (" + mapPlayerSize + ")";
|
||||||
|
|
||||||
|
|
||||||
return mapName.charAt(0).toUpperCase() + mapName.slice(1);
|
return mapName.charAt(0).toUpperCase() + mapName.slice(1);
|
||||||
|
|||||||
BIN
app/assets/sound/4playersDraft.mp3
Normal file
BIN
app/assets/sound/4playersDraft.mp3
Normal file
Binary file not shown.
@ -37,7 +37,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.raceIcon{
|
.raceIcon{
|
||||||
width: 90px;
|
width: 60px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
margin: 3px;
|
margin: 3px;
|
||||||
border: 1px solid;
|
border: 1px solid;
|
||||||
|
|||||||
@ -43,11 +43,11 @@ class HomeController @Inject()(cc: ControllerComponents) extends AbstractControl
|
|||||||
logger.info(s"Received request from: ${request.remoteAddress}")
|
logger.info(s"Received request from: ${request.remoteAddress}")
|
||||||
val deciderHumanName = config.getString(s"deciders.$deciderName.name")
|
val deciderHumanName = config.getString(s"deciders.$deciderName.name")
|
||||||
val deciderDescription = config.getString(s"deciders.$deciderName.rules")
|
val deciderDescription = config.getString(s"deciders.$deciderName.rules")
|
||||||
val isSolo = Try(config.getBoolean(s"deciders.$deciderName.isSolo")).getOrElse(false)
|
val existAdditionalRaces = Try(config.getBoolean(s"deciders.$deciderName.existAdditionalRaces")).getOrElse(false)
|
||||||
val raceCount = Try(config.getInt(s"deciders.$deciderName.raceCount")).getOrElse(1)
|
val raceCount = Try(config.getInt(s"deciders.$deciderName.raceCount")).getOrElse(1)
|
||||||
val lastmapsSettings = LastMapsSelectConfig(true, true, true, true)
|
val lastmapsSettings = LastMapsSelectConfig(true, true, true, true)
|
||||||
val raceSelect = RaceSelect(true, false)
|
val raceSelect = RaceSelect(true, false)
|
||||||
Ok(views.html.index(deciderName, deciderHumanName, raceCount, deciderDescription, raceSelect, lastmapsSettings, isSolo))
|
Ok(views.html.index(deciderName, deciderHumanName, raceCount, deciderDescription, raceSelect, lastmapsSettings, existAdditionalRaces))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
@(deciderName: String, deciderHumanName: String, raceCount: Int, rules: String, raceSelect: RaceSelect, boSettings: LastMapsSelectConfig, isSolo: Boolean)(implicit r: Request[_])
|
@(deciderName: String, deciderHumanName: String, raceCount: Int, rules: String, raceSelect: RaceSelect, boSettings: LastMapsSelectConfig, existAdditionalRaces: Boolean)(implicit r: Request[_])
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
||||||
<span id="deciderName" style="display: none">@deciderName</span>
|
<span id="deciderName" style="display: none">@deciderName</span>
|
||||||
<span id="raceCount" style="display: none">@raceCount</span>
|
<span id="raceCount" style="display: none">@raceCount</span>
|
||||||
|
<span id="existAdditionalRaces" style="display: none">@existAdditionalRaces</span>
|
||||||
<span id="last1Presence" style="display: none">@boSettings.last1</span>
|
<span id="last1Presence" style="display: none">@boSettings.last1</span>
|
||||||
<span id="last3Presence" style="display: none">@boSettings.last3</span>
|
<span id="last3Presence" style="display: none">@boSettings.last3</span>
|
||||||
<span id="last5Presence" style="display: none">@boSettings.last5</span>
|
<span id="last5Presence" style="display: none">@boSettings.last5</span>
|
||||||
<span id="last7Presence" style="display: none">@boSettings.last7</span>
|
<span id="last7Presence" style="display: none">@boSettings.last7</span>
|
||||||
<span id="isSolo" style="display: none">@isSolo</span>
|
|
||||||
|
|
||||||
|
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
@ -21,7 +20,7 @@
|
|||||||
<script type='text/javascript' src='@routes.Assets.at("lib/underscore/underscore.js")'></script>
|
<script type='text/javascript' src='@routes.Assets.at("lib/underscore/underscore.js")'></script>
|
||||||
<script type='text/javascript' src='@routes.Assets.at("lib/backbonejs/backbone.js")'></script>
|
<script type='text/javascript' src='@routes.Assets.at("lib/backbonejs/backbone.js")'></script>
|
||||||
<script type="text/javascript" src="@routes.Assets.at("lib/jquery-cookie/jquery.cookie.js")"></script>
|
<script type="text/javascript" src="@routes.Assets.at("lib/jquery-cookie/jquery.cookie.js")"></script>
|
||||||
<script type='text/javascript' src='@routes.Assets.at("javascripts/index.js?301222")'></script>
|
<script type='text/javascript' src='@routes.Assets.at("javascripts/index.js?050823")'></script>
|
||||||
</head>
|
</head>
|
||||||
<body data-ws-url="@routes.HomeController.ws.webSocketURL()">
|
<body data-ws-url="@routes.HomeController.ws.webSocketURL()">
|
||||||
<div class="navbar navbar-inverse navbar-fixed-top">
|
<div class="navbar navbar-inverse navbar-fixed-top">
|
||||||
|
|||||||
@ -25,6 +25,20 @@ deciders{
|
|||||||
name = "Классический десайдер"
|
name = "Классический десайдер"
|
||||||
rules = """"""
|
rules = """"""
|
||||||
}
|
}
|
||||||
|
freakcup{
|
||||||
|
maps = [["2p_battle_marshes"],
|
||||||
|
["2p_quests_triumph"],
|
||||||
|
["2p_meeting_of_minds"],
|
||||||
|
["2p_shrine_of_excellion_[Rem]"],
|
||||||
|
["2p_titan_fall_[Rem]"],
|
||||||
|
["2p_tranquilitys_end_[Rem]"],
|
||||||
|
["2p_outer_reaches"],
|
||||||
|
["2p_blood_river_[Rem]"],
|
||||||
|
["2p_emerald_river"]]
|
||||||
|
raceCount = 1
|
||||||
|
name = "Десайдер freakcup"
|
||||||
|
rules = """"""
|
||||||
|
}
|
||||||
flazzomappool{
|
flazzomappool{
|
||||||
maps = [["2p_battle_marshes"],
|
maps = [["2p_battle_marshes"],
|
||||||
["2p_fallen_city_[Rem]"],
|
["2p_fallen_city_[Rem]"],
|
||||||
@ -58,7 +72,6 @@ deciders{
|
|||||||
["летний"]]
|
["летний"]]
|
||||||
|
|
||||||
name = "Выбираем салат на новый год"
|
name = "Выбираем салат на новый год"
|
||||||
isSolo = true
|
|
||||||
rules = """"""
|
rules = """"""
|
||||||
}
|
}
|
||||||
turtleshell{
|
turtleshell{
|
||||||
@ -279,6 +292,7 @@ deciders{
|
|||||||
}
|
}
|
||||||
shouldercup{
|
shouldercup{
|
||||||
description = true
|
description = true
|
||||||
|
existAdditionalRaces = true
|
||||||
raceCount = 3
|
raceCount = 3
|
||||||
maps = [["6p_paynes_retribution", "Количество точек: 28/2/2\nСпорных точек: 10/0/2\nТермогенераторы: 2"],
|
maps = [["6p_paynes_retribution", "Количество точек: 28/2/2\nСпорных точек: 10/0/2\nТермогенераторы: 2"],
|
||||||
["6p_fury_island", "Количество точек: 26/6/1\nСпорных точек: 6 + 1 крит\nТермогенераторы: Отсутствуют"],
|
["6p_fury_island", "Количество точек: 26/6/1\nСпорных точек: 6 + 1 крит\nТермогенераторы: Отсутствуют"],
|
||||||
@ -345,21 +359,29 @@ deciders{
|
|||||||
Чтобы не было повторений карт, игроки могу выбрать всего 1 раз карту из списка. """
|
Чтобы не было повторений карт, игроки могу выбрать всего 1 раз карту из списка. """
|
||||||
}
|
}
|
||||||
tpmodcup{
|
tpmodcup{
|
||||||
maps = ["2p_battle_marshes",
|
description = true
|
||||||
"2p_fallen_city_[Rem]",
|
raceCount = 1
|
||||||
"2p_fata_morgana_[Rem]",
|
maps = [["2p_battle_marshes"],
|
||||||
"2p_quests_triumph",
|
["2p_fallen_city_[Rem]"],
|
||||||
"2p_shrine_of_excellion_[Rem]",
|
["2p_quests_triumph"],
|
||||||
"2p_titan_fall_[Rem]",
|
["2p_fear"],
|
||||||
"2p_tranquilitys_end_[Rem]",
|
["2p_shrine_of_excellion_[Rem]"],
|
||||||
"2p_blood_river_[Rem]",
|
["2p_titan_fall_[Rem]"],
|
||||||
"2p_sugaroasis",
|
["2p_tranquilitys_end_[Rem]"],
|
||||||
"2p_faceoff",
|
["2p_blood_river_[Rem]"],
|
||||||
"2p_deadly_fun_archeology",
|
["2p_sugaroasis"],
|
||||||
"2p_terror_psyclaw",
|
["2p_faceoff"],
|
||||||
"2p_meeting_of_minds"]
|
["2p_deadly_fun_archeology"],
|
||||||
|
["2p_terror_psyclaw"],
|
||||||
|
["2p_meeting_of_minds_pro", "Модифицированная версия Meeting of minds v 1.0: 6 точек на игрока, одна из которой находится за реликтом."],
|
||||||
|
["2p_edemus_gamble"],
|
||||||
|
["[tp_mod]jungle_morning"],
|
||||||
|
["2p_fraziersdemise"],
|
||||||
|
["[tp_mod]light_brigade"],
|
||||||
|
["2p_outer_reaches"],
|
||||||
|
["2p_vortex_plateau"]]
|
||||||
name = "Турнир по ТП моду"
|
name = "Турнир по ТП моду"
|
||||||
rules = """ Первая карта десайдер выбирается методом вычеркивания, остальные лузер пик."""
|
rules = """Первая карта десайдер выбирается методом вычеркивания, остальные лузер пик. """
|
||||||
}
|
}
|
||||||
bestfriendscup{
|
bestfriendscup{
|
||||||
maps = ["4p_gorhael_crater",
|
maps = ["4p_gorhael_crater",
|
||||||
@ -388,7 +410,7 @@ deciders{
|
|||||||
rules = """Выбор карт в БО3 и БО5 осуществляется без лузерпиков, с тремя и пятью десайдерами соответственно. Игроки вычеркивают по очереди карты из маппула, пока их не останется 3 (для БО3) или 5 (для БО5). На этих картах и проходят все матчи встречи. Затем игроки вычеркивают выбранные карты, пока не останется только одна, на которой и играется первый матч встречи. Тот, кто первым начал вычеркивать из всего маппула, уступает оппоненту право вычеркивания первой карты из оставшихся карт-десайдеров. Во втором и последующем матчах проигравший выбирает карту из числа выбранных 3 (5) десайдеров. """
|
rules = """Выбор карт в БО3 и БО5 осуществляется без лузерпиков, с тремя и пятью десайдерами соответственно. Игроки вычеркивают по очереди карты из маппула, пока их не останется 3 (для БО3) или 5 (для БО5). На этих картах и проходят все матчи встречи. Затем игроки вычеркивают выбранные карты, пока не останется только одна, на которой и играется первый матч встречи. Тот, кто первым начал вычеркивать из всего маппула, уступает оппоненту право вычеркивания первой карты из оставшихся карт-десайдеров. Во втором и последующем матчах проигравший выбирает карту из числа выбранных 3 (5) десайдеров. """
|
||||||
}
|
}
|
||||||
freneticmappool{
|
freneticmappool{
|
||||||
raceCount = 2
|
raceCount = 3
|
||||||
description = true
|
description = true
|
||||||
maps =[["2p_battle_marshes"],
|
maps =[["2p_battle_marshes"],
|
||||||
["2p_fallen_city_[Rem]"],
|
["2p_fallen_city_[Rem]"],
|
||||||
@ -402,7 +424,9 @@ deciders{
|
|||||||
["2p_deadly_fun_archeology"],
|
["2p_deadly_fun_archeology"],
|
||||||
["2p_sugaroasis"],
|
["2p_sugaroasis"],
|
||||||
["2p_outer_reaches"],
|
["2p_outer_reaches"],
|
||||||
["2p_meeting_of_minds"]]
|
["2p_meeting_of_minds"],
|
||||||
|
["2p_fraziersdemise"],
|
||||||
|
["2p_fata_morgana_[Rem]"]]
|
||||||
name = "Frenetic map pool"
|
name = "Frenetic map pool"
|
||||||
rules = """ """
|
rules = """ """
|
||||||
}
|
}
|
||||||
@ -437,7 +461,7 @@ deciders{
|
|||||||
["4p_marconia"],
|
["4p_marconia"],
|
||||||
["4p_panrea_lowlands"],
|
["4p_panrea_lowlands"],
|
||||||
["4p_saints_square"],
|
["4p_saints_square"],
|
||||||
["6p_snowblind"],
|
["4p_snowblind"],
|
||||||
["4p_tartarus_center"],
|
["4p_tartarus_center"],
|
||||||
["4p_skerries"],
|
["4p_skerries"],
|
||||||
["4p_doom_spiral"]]
|
["4p_doom_spiral"]]
|
||||||
@ -477,5 +501,50 @@ deciders{
|
|||||||
name = "Casino cup"
|
name = "Casino cup"
|
||||||
rules = """Выбор карт без лузерпиков, с тремя и пятью десайдерами соответственно. Игроки вычеркивают по очереди карты из маппула, пока их не останется 3 (для БО3) или 5 (для БО5). На этих картах и проходят все матчи встречи. Затем игроки вычеркивают выбранные карты, пока не останется только одна, на которой и играется первый матч встречи. Тот, кто первым начал вычеркивать из всего маппула, уступает оппоненту право вычеркивания первой карты из оставшихся карт-десайдеров. Во втором и последующем матчах проигравший выбирает карту из числа выбранных 3 (5) десайдеров. """
|
rules = """Выбор карт без лузерпиков, с тремя и пятью десайдерами соответственно. Игроки вычеркивают по очереди карты из маппула, пока их не останется 3 (для БО3) или 5 (для БО5). На этих картах и проходят все матчи встречи. Затем игроки вычеркивают выбранные карты, пока не останется только одна, на которой и играется первый матч встречи. Тот, кто первым начал вычеркивать из всего маппула, уступает оппоненту право вычеркивания первой карты из оставшихся карт-десайдеров. Во втором и последующем матчах проигравший выбирает карту из числа выбранных 3 (5) десайдеров. """
|
||||||
}
|
}
|
||||||
|
badcup {
|
||||||
|
raceCount = 3
|
||||||
|
maps = [["2p_sugaroasis"],
|
||||||
|
["2p_titan_fall_[Rem]"],
|
||||||
|
["2p_deadly_fun_archeology"],
|
||||||
|
["2p_tranquilitys_end_[Rem]"],
|
||||||
|
["2p_shrine_of_excellion_[Rem]"],
|
||||||
|
["2p_quests_triumph"],
|
||||||
|
["2p_fallen_city_[Rem]"],
|
||||||
|
["2p_outer_reaches"],
|
||||||
|
["2p_battle_marshes"],
|
||||||
|
["2p_bloody_hell_[Ed]"],
|
||||||
|
["2p_blood_river_[Rem]"]]
|
||||||
|
name = "BAD cup"
|
||||||
|
rules = """ """
|
||||||
|
}
|
||||||
|
ppcz {
|
||||||
|
raceCount = 2
|
||||||
|
maps = [["2p_fata_morgana_[Rem]"],
|
||||||
|
["2p_titan_fall_[Rem]"],
|
||||||
|
["2p_tranquilitys_end_[Rem]"],
|
||||||
|
["2p_shrine_of_excellion_[Rem]"],
|
||||||
|
["2p_quests_triumph"],
|
||||||
|
["2p_fallen_city_[Rem]"],
|
||||||
|
["2p_outer_reaches"],
|
||||||
|
["2p_battle_marshes"],
|
||||||
|
["2p_emerald_river"],
|
||||||
|
["2p_blood_river_[Rem]"],
|
||||||
|
["2p_meeting_of_minds"]]
|
||||||
|
name = "PPCZ"
|
||||||
|
rules = """ """
|
||||||
|
}
|
||||||
|
badcup_together {
|
||||||
|
raceCount = 2
|
||||||
|
maps = [["4p_tartarus_center"],
|
||||||
|
["4p_skerries"],
|
||||||
|
["4p_saints_square"],
|
||||||
|
["4p_cold_war"],
|
||||||
|
["4p_biffys_peril"],
|
||||||
|
["4p_imperial_area"],
|
||||||
|
["4p_tainted_soul"],
|
||||||
|
["4p_chaos_platenau"],
|
||||||
|
["4p_colosseum_of_deadman"]]
|
||||||
|
name = "BAD CUP Together"
|
||||||
|
rules = """ """
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user