var nmstrings = ['Nope, sorry!', 'No way!', 'Fail', 'Nope', 'No', 'That\'s wrong', 'What?!',
'Wrong', 'Haha, what?!', 'You kidding?', 'Don\'t make me laugh', 'You mad?',
'Try again'];
+ var historyvalues = [];
+ var historycursor = 0;
var DOM = {};
String.prototype.encodeEntities = function() {
addChatEntry(joinspan);
updateUsers(data);
- DOM.messagebox.keyup(function(event) {
+ DOM.messagebox.keydown(function(event) {
if (event.keyCode === 13) {
var val = $.trim(DOM.messagebox.val());
if (val !== "") {
}
});
- DOM.guessbox.keyup(function(event) {
- if (event.keyCode === 13) {
- var val = $.trim(DOM.guessbox.val().toLowerCase());
- if (val !== "") {
- socket.emit('guess', val);
- }
- DOM.guessbox.val("");
+ DOM.guessbox.keydown(function(event) {
+ switch (event.keyCode) {
+ case 13: // return
+ var guess = $.trim(DOM.guessbox.val());
+ if (guess !== "") {
+ socket.emit('guess', guess.toLowerCase());
+ historyvalues.push(guess);
+ if (historyvalues.length > 20) {
+ historyvalues.splice(0, 1);
+ }
+ historycursor = historyvalues.length;
+ }
+ DOM.guessbox.val("");
+ break;
+ case 38: // up-arrow
+ if (historycursor > 0) {
+ DOM.guessbox.val(historyvalues[--historycursor]);
+ }
+ break;
+ case 40: // down-arrow
+ if (historycursor < historyvalues.length - 1) {
+ DOM.guessbox.val(historyvalues[++historycursor]);
+ }
+ else {
+ historycursor = historyvalues.length;
+ DOM.guessbox.val("");
+ }
}
});
+
DOM.guessbox.focus();
socket.on('newuser', userJoin);
ctx.save();
this.getCode = function() {
return code;
- }
+ };
this.toDataURL = function() {
return _canvas.toDataURL();
- }
+ };
};
http.get("/signup", function(req, res) {
checkDistance(subject.replace(/\-/g, ""), guess, config.threshold)) {
return true;
}
+ if (subject.match(/\+/) &&
+ checkDistance(subject.replace(/\+/, "and"), guess, config.threshold)) {
+ return true;
+ }
if (enableartistrules) {
if (subject.match(/^the /)) {
var nothe = subject.replace(/^the /, "");
var totusers = 0;
var usersData = Object.create(null);
- var playedtracks = Object.create(null); // Used to prevent the same song from playing twice in one game
+ var playedtracks = []; // The list of already played songs
var artistName = null;
var artistlcase = null;
socket.roomname = roomname;
socket.join(roomname);
addUser(socket, true);
- }
+ };
// A user requested an invalid name
var invalidNickName = function(socket, feedback) {
var key = "user:"+data.nickname;
usersdb.exists(key, function(err, resp) {
if (resp === 1) { // User already exists
- feedback = '<span class="label label-important">That name belongs '
+ feedback = '<span class="label label-important">That name belongs ';
feedback += 'to a registered user.</span>';
return invalidNickName(socket, feedback);
}
songsdb.srandmember(roomname, function(err, res) {
songsdb.hmget(res, "artistName", "trackName", "collectionName", "previewUrl",
"artworkUrl60", "trackViewUrl", function(e, replies) {
- if (playedtracks[res]) {
+ if (playedtracks.indexOf(res) !== -1) {
return sendLoadTrack();
}
- playedtracks[res] = true;
+ playedtracks.push(res);
artistName = replies[0];
artistlcase = artistName.toLowerCase();
trackName = replies[1];
var reset = function() {
songcounter = 0;
- playedtracks = Object.create(null);
+ if (playedtracks.length === config.fifolength) {
+ playedtracks.splice(0, config.songsinarun);
+ }
sendLoadTrack();
};