var App = {
- nickname: null,
- socket: null,
+ nickname: null,
+ socket: null,
pvtmgsto: null,
roundpoints: 0,
stopanimation: false,
'Game is about to start...', 'Game is over', 'New game will start soon...'],
tmstrings: ['Yes, you guessed the title. Who is the artist?', 'Now tell me the artist!',
'Correct, do you also know the artist?'],
- amstrings: ['Yes, that\'s the artist. What about the title?', 'Exactly, now tell me the title!',
+ amstrings: ['Yes, that\'s the artist. What about the title?', 'Exactly, now tell me the title!',
'Do you also know the title?'],
- bmstrings: ['Yeah true! do you like this track?', 'Good job!', 'Great!',
+ bmstrings: ['Yeah true! do you like this track?', 'Good job!', 'Great!',
'Very well done!', 'Exactly!', 'Excellent!'],
nmstrings: ['Nope, sorry!', 'No way!', 'Fail', 'Nope', 'No', 'That\'s wrong', 'What?!',
'Wrong', 'Haha, what?!', 'You kidding?', 'Don\'t make me laugh', 'You mad?'],
// Prompt for name and send it.
- setNickName: function(msg) {
- if (!msg) {
+ setNickName: function(msg) {
+ if (!msg) {
msg = "What's your name?";
var html = '<div class="modal-header"><h3>Welcome to Binb</h3></div>';
$('.modal-body p').html(msg);
$('#login').focus();
}
- },
+ },
// Your submitted name was invalid
- invalidNickName: function(data) {
- App.setNickName(data.feedback+"<br/>Try again:");
- },
+ invalidNickName: function(data) {
+ App.setNickName(data.feedback+"<br/>Try again:");
+ },
// You joined the game
ready: function(data) {
App.addChatEntry(joinspan);
App.updateUsers(data);
- var messagebox = $("#message");
+ var messagebox = $("#message");
messagebox.keyup(function(event) {
if (event.keyCode === 13) {
var val = $.trim(messagebox.val());
},
// Update the list of users
- updateUsers: function(data) {
- var elem = $("#users");
- elem.empty();
+ updateUsers: function(data) {
+ var elem = $("#users");
+ elem.empty();
var users = [];
for (var key in data.users) {
users.push(data.users[key]);
users.sort(function(a, b) {return b.points - a.points;});
// Flag to test if our private recipient is in the list of active users
var found = false;
- for (var i=0; i<users.length; i++) {
- var user = users[i];
- var li = $('<li></li>');
+ for (var i=0; i<users.length; i++) {
+ var user = users[i];
+ var li = $('<li></li>');
var pvt = $('<span class="private label label-info">P</span>');
var username = $('<span class="name"></span>').text(user.nickname);
var points = $('<span class="points">('+user.points+')</span>');
var roundrank = $('<span></span>');
var roundpoints = $('<span class="round-points"></span>');
li.append(pvt, username, points, roundrank, roundpoints);
- elem.append(li);
+ elem.append(li);
if (App.pvtmsgto === user.nickname) {
pvt.show();
username.click(App.clearPrivate);
username.addClass("correct");
}
}
- }
+ }
if (!found && App.pvtmsgto) {
var recipient = $('#recipient');
var width = recipient.outerWidth(true) + 1;
App.pvtmsgto = null;
$("#message").focus();
}
- },
+ },
addPrivate: function(nickname) {
if (App.pvtmsgto) {
}
var recipient = $("#recipient");
recipient.css('margin-right','4px');
- recipient.text("To "+nickname+":");
+ recipient.text("To "+nickname+":");
var width = recipient.outerWidth(true) + 1;
recipient.hide();
$('#message').animate({'width':'-='+width+'px'}, "fast", function() {recipient.show();});
- var el = $("span.name:contains("+nickname+")");
+ var el = $("span.name:contains("+nickname+")");
el.prev().show();
el.unbind('click');
el.click(App.clearPrivate);
- App.pvtmsgto = nickname;
- $("#message").focus();
+ App.pvtmsgto = nickname;
+ $("#message").focus();
},
clearPrivate: function() {
var recipient = $("#recipient");
var width = recipient.outerWidth(true) + 1;
recipient.css('margin-right','0');
- recipient.text("");
+ recipient.text("");
$('#message').animate({'width':'+='+width+'px'}, "fast");
var el = $("span.name:contains("+App.pvtmsgto+")");
el.prev().hide();
el.unbind("click");
- el.click(function() {
+ el.click(function() {
App.addPrivate($(this).text());
});
App.pvtmsgto = null;
- $("#message").focus();
+ $("#message").focus();
},
// Receive a chat message
prefix = (App.nickname === data.from) ? '(To '+data.to+')' : '(From '+prefix+')';
msgspan.addClass("private");
}
- var msg = prefix+": "+data.chatmsg;
- msgspan.text(msg);
- App.addChatEntry(msgspan);
+ var msg = prefix+": "+data.chatmsg;
+ msgspan.text(msg);
+ App.addChatEntry(msgspan);
},
loadTrack: function(data) {
App.countDown(Date.now()+10000);
},
- // Let the user know when he / she has disconnected
- disconnect: function() {
+ // Let the user know when he / she has disconnected
+ disconnect: function() {
App.stopanimation = true;
$('#player').jPlayer("stop");
var errormsg = "ERROR: You have disconnected.";
- var errorspan = $("<span class='error'></span>");
+ var errorspan = $("<span class='error'></span>");
errorspan.text(errormsg);
- App.addChatEntry(errorspan);
+ App.addChatEntry(errorspan);
App.addFeedback('Something wrong happened');
- var users = $("#users");
- users.empty();
- },
+ var users = $("#users");
+ users.empty();
+ },
- // Add a chat entry, whether message, notification, etc.
- addChatEntry: function(childNode) {
- var li = $("<li class='entry'></li>");
- li.append(childNode);
- var chat = $("#chat");
- chat.append(li);
- var chatRaw = document.getElementById("chat");
- chatRaw.scrollTop = chatRaw.scrollHeight;
- },
+ // Add a chat entry, whether message, notification, etc.
+ addChatEntry: function(childNode) {
+ var li = $("<li class='entry'></li>");
+ li.append(childNode);
+ var chat = $("#chat");
+ chat.append(li);
+ var chatRaw = document.getElementById("chat");
+ chatRaw.scrollTop = chatRaw.scrollHeight;
+ },
addFeedback: function(txt, style) {
if (typeof style === 'string') {
$('#feedback').text(txt);
},
- // Set up the App object.
- init: function() {
+ // Set up the App object.
+ init: function() {
$('#modal').modal({keyboard:false,show:false,backdrop:"static"});
if ($.browser.mozilla) {
// Block ESC button in firefox (it breaks all socket connection).
}
});
}
- App.socket = io.connect("http://binb.nodejitsu.com/", {'reconnect':false});
+ App.socket = io.connect("http://binb.nodejitsu.com/", {'reconnect':false});
App.socket.on("connect", function() {
$("#player").jPlayer({
ready: function() {
});
App.socket.on('invalidnickname', App.invalidNickName);
App.socket.on('ready', App.ready);
- App.socket.on("disconnect", App.disconnect);
- }
+ App.socket.on("disconnect", App.disconnect);
+ }
};
// Routes
http.get("/", function(req, res) {
- res.sendfile("index.html");
+ res.sendfile("index.html");
});
// Starting HTTP server
// Setting up Socket.IO
var io = require("socket.io").listen(http);
-io.enable('browser client minification'); // send minified client
-io.enable('browser client etag'); // apply etag caching logic based on version number
-io.enable('browser client gzip'); // gzip the file
-io.set('log level', 1); // reduce logging
+io.enable('browser client minification'); // send minified client
+io.enable('browser client etag'); // apply etag caching logic based on version number
+io.enable('browser client gzip'); // gzip the file
+io.set('log level', 1); // reduce logging
// enable transports
io.set('transports', ['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']);
sockets : Object.create(null),
usersData : Object.create(null),
- playedtracks: [], // Used to prevent the same song from playing twice in one game
+ playedtracks: [], // Used to prevent the same song from playing twice in one game
artistName: null,
trackName: null,
- collectionName: null,
+ collectionName: null,
previewUrl: null,
artworkUrl: null,
trackViewUrl: null,
// A user is submitting a name
setNickName: function(socket, data) {
- var feedback = null;
- if (Game.userExists(data.nickname)) {
- feedback = '<span class="label label-important">That name is alredy taken.</span>';
+ var feedback = null;
+ if (Game.userExists(data.nickname)) {
+ feedback = '<span class="label label-important">That name is alredy taken.</span>';
}
- if (feedback) {
- return Game.invalidNickName(socket, feedback);
+ if (feedback) {
+ return Game.invalidNickName(socket, feedback);
}
- socket.nickname = data.nickname;
+ socket.nickname = data.nickname;
// Add user to the list of active users and broadcast the event
Game.addUser(socket);
socket.emit('ready', {users:Game.usersData,trackscount:Game.trackscount});
socket.broadcast.emit('newuser', {nickname:socket.nickname,users:Game.usersData});
- },
+ },
// A user requested an invalid name
- invalidNickName: function(socket, feedback) {
+ invalidNickName: function(socket, feedback) {
socket.emit('invalidnickname', {feedback:feedback});
- },
+ },
// A user has left (DCed, etc.)
- userLeft: function(socket) {
+ userLeft: function(socket) {
if (socket.nickname !== undefined) {
var leftname = socket.nickname;
Game.removeUser(socket);
io.sockets.emit('userleft', {nickname:leftname,users:Game.usersData});
}
- },
+ },
sendChatMessage: function (socket, data) {
if (data.to) {
socket.on('guess', function(data) {
Game.guess(socket, data);
});
- socket.on("disconnect", function() {
- Game.userLeft(socket);
- });
+ socket.on("disconnect", function() {
+ Game.userLeft(socket);
+ });
});