var ws;
var userName = ""
window.onload = function() {
'use strict';
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
var LobbyList = Backbone.View.extend({
lobbies: undefined,
initialize: function () {
this.elCount = 0;
},
template: _.template('
\n' +
' | Host | \n' +
' Status | \n' +
' Action |
\n' +
'
'),
events: {
"click .title": "check" // Обработчик клика на кнопке "Проверить"
},
joinAsPlayer: function () {
this.elCount = "azaz" + getRandomInt(100000000);
this.render();
},
render: function() {
var lobbiesAsTableRows = _.reduce(this.lobbies, function (memo, lobby) {
var joinButton = '';
var observerButton = '';
return memo + '\n' +
' | '+ lobby.user1Name +' | \n' +
' '+ lobby.user2Name +' | \n' +
' '+ lobby.status +' | \n' +
' ' + joinButton + ' ' + observerButton +
' | ' +
'
';
}, "");
var tableStart = '\n' +
' | Player1 | \n' +
' Player2 | \n' +
' Status | \n' +
' Action |
\n';
var tableEnd = '
';
var res = tableStart + lobbiesAsTableRows + tableEnd;
$("#deciderList tbody", res).append(lobbiesAsTableRows);
console.log(res);
this.$el.html(res);
}
});
var lobbyList = new LobbyList;
$("#lobbiesList").append(lobbyList.$el);
lobbyList.render();
$("#createDecider").click(function(event) {
event.preventDefault();
ws.send(JSON.stringify({
type: "createDecider"
}));
});
$("#updateDecider").click(function(event) {
event.preventDefault();
ws.send(JSON.stringify({
type: "updateDecider"
}));
});
$("#getAllUsers").click(function(event) {
event.preventDefault();
ws.send(JSON.stringify({
type: "getLobbies"
}));
});
$("#exit").click(function(event) {
event.preventDefault();
ws.send(JSON.stringify({
type: "leaveDecider"
}));
$("#decider").hide();
$("#lobbies").show();
});
if($.cookie('user')=== undefined){
var result = prompt("Введите ник", );
$.cookie('user', result, { expires: 7 });
userName = result;
}else{
userName = $.cookie('user');
}
$("#playerName").html(userName);
ws = new WebSocket($("body").data("ws-url"));
ws.onmessage = function(event) {
var message;
message = JSON.parse(event.data);
switch (message.type) {
case "refreshLobby":
renderMaps(message.lobby.maps);
renderPlayersAndStats(message.lobby);
break;
case "switchToLobby":
console.log(message);
switchToLobby(message.lobby.maps);
renderPlayersAndStats(message.lobby);
break;
case "lobbies":
lobbyList.lobbies = message.lobbies;
lobbyList.render();
return console.log(message);
default:
}
};
ws.onopen = function () {
ws.send(JSON.stringify({
type: "userName",
name: $.cookie('user')
}));
}
let timerId = setInterval(() =>
ws.send(JSON.stringify({
type: "getLobbies"
})), 2000);
}
function changeNick() {
result = prompt("Введите ник", $.cookie('user'));
if(result == null) return;
$.cookie('user', result, { expires: 7 });
ws.send(JSON.stringify({
type: "userName",
name: $.cookie('user')
}));
userName = $.cookie('user');
$("#playerName").html(userName);
}
// -----ф-ии прихода с сервера
function switchToLobby(maps) {
console.log(maps);
renderMaps(maps);
$("#lobbies").hide();
$("#decider").show();
}
function renderMaps(maps) {
var resHtml = "";
_.each(maps, function (map) {
var banHtml = "";
var banClass = "";
if(map.isBanned){
banHtml = "✕
";
banClass = "bannedMap";
}
resHtml = resHtml + '';
})
$("#mapList").html(resHtml);
}
function renderPlayersAndStats(lobby) {
var resHtml = "";
var player1ReadyBtn = "";
var player2ReadyBtn = "";
var readyImg = "
";
var notReadyImg = "
";
if(lobby.user1Name === userName){
if(lobby.user1Ready){
player1ReadyBtn = ""
}else{
player1ReadyBtn = ""
}
}else{
if(lobby.user1Ready){
player1ReadyBtn = readyImg
}else{
player1ReadyBtn = notReadyImg
}
}
if(lobby.user2Name === userName){
if(lobby.user2Ready){
player2ReadyBtn = ""
}else{
player2ReadyBtn = ""
}
} else {
if(lobby.user2Ready){
player2ReadyBtn = readyImg
}else{
player2ReadyBtn = notReadyImg
}
}
console.log(lobby);
switch (lobby.status){
case "NotStarted()":
resHtml = "" + lobby.user1Name + ": " + player1ReadyBtn +"
"
if(lobby.user2Name !== ""){
var kickBtn = ""
if(lobby.user1Name === userName){
kickBtn = "";
}
resHtml += "" + lobby.user2Name + ": " + player2ReadyBtn + "
" + kickBtn + "
"
}else{
resHtml += "waiting 2-nd player...
"
}
break;
case "Draft()":
resHtml = ""+lobby.user1Name+ " vs " + lobby.user2Name +"";
break;
case "Finish()":
var lastMap = _.find(lobby.maps, function (map){
return map.isBanned === false;
}).map;
resHtml = ""+convertMapName(lastMap)+"";
}
resHtml = resHtml + ""
$("#playersStatsList").html(resHtml);
}
function banMap(map){
ws.send(JSON.stringify({
type: "banMap",
map: map
}));
}
function setReady(){
ws.send(JSON.stringify({
type: "setReady"
}));
}
function setNotReady(){
ws.send(JSON.stringify({
type: "setNotReady"
}));
}
function joinDecider(actorName){
console.log(actorName);
ws.send(JSON.stringify({
type: "joinDecider",
lobbyActorName: actorName
}));
}
function convertMapName (techMapName) {
var mapName = techMapName.replace("2p_", "").replaceAll("_", " ") + " (2)";
return mapName.charAt(0).toUpperCase() + mapName.slice(1);
}