From: Luigi Pinca Date: Wed, 4 Apr 2012 16:34:47 +0000 (+0200) Subject: nickname is now saved in a session cookie X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=b838f47e8d594bdc1dabc046898e152fd6173be4;p=binbsis50.git nickname is now saved in a session cookie --- diff --git a/package.json b/package.json index cf61c44..11125da 100644 --- a/package.json +++ b/package.json @@ -14,5 +14,5 @@ "engines": { "node": "0.6.x" }, - "version": "0.2.0-9" + "version": "0.2.0-14" } \ No newline at end of file diff --git a/public/static/js/room.js b/public/static/js/room.js index 906d19a..b422947 100644 --- a/public/static/js/room.js +++ b/public/static/js/room.js @@ -31,54 +31,61 @@ // Prompt for name and send it. var joinRoom = function(msg) { - if (!msg) { - msg = "What's your name?"; - - var html = ''; - html += ''; - html += ''; - - $(html).appendTo(DOM.modal); - var login = $('#login'); - var button = $('#join'); - button.click(function() { - var val = $.trim(login.val()); - if (val !== "") { - nickname = val; - socket.emit('joinroom', {nickname:nickname,roomname:roomname}); - } - else { - var txt = "Nickname can't be empty."; - invalidNickName(''+txt+''); - } - login.val(""); - }); - login.keyup(function(event) { - if (event.keyCode === 13) { - button.click(); - } - }); - DOM.modal.modal('show'); - DOM.modal.on('shown', function() { - login.focus(); - }); + if (/nickname\s*\=/.test(document.cookie) && !msg) { + nickname = unescape(document.cookie.replace(/.*nickname\s*\=\s*([^;]*);?.*/, "$1")); + socket.emit('joinroom', {nickname:nickname,roomname:roomname}); } else { - $('.modal-body p').html(msg); - $('#login').focus(); + if (!$('body').hasClass('modal-open')) { + var html = ''; + html += ''; + html += ''; + + $(html).appendTo(DOM.modal); + var login = $('#login'); + var button = $('#join'); + button.click(function() { + var val = $.trim(login.val()); + if (val !== "") { + nickname = val; + socket.emit('joinroom', {nickname:nickname,roomname:roomname}); + } + else { + var txt = "Nickname can't be empty."; + invalidNickName(''+txt+''); + } + login.val(""); + }); + login.keyup(function(event) { + if (event.keyCode === 13) { + button.click(); + } + }); + DOM.modal.modal('show'); + DOM.modal.on('shown', function() { + login.focus(); + }); + } + else { + $('.modal-body p').html(msg); + $('#login').focus(); + } } }; // Your submitted name was invalid var invalidNickName = function(feedback) { - joinRoom(feedback+"
Try again:"); + joinRoom(feedback+"
Try with another one:"); }; // You joined the game var ready = function(data) { + if (!/nickname\s*\=/.test(document.cookie)) { + document.cookie = "nickname="+escape(nickname)+";path=/;"; + } DOM.modal.modal('hide').empty(); $('#total-tracks span').text(data.trackscount); var msg = nickname+" joined the game"; @@ -679,6 +686,7 @@ } }, swfPath: "/static/swf/", + solution: "flash, html", supplied: "m4a", preload: "auto", volume: 1 diff --git a/server.js b/server.js index 95a91aa..9b91ab5 100644 --- a/server.js +++ b/server.js @@ -179,12 +179,17 @@ var amatch = function(subject, guess, enableartistrules) { return false; }; +var sockets = Object.create(null); + +var getUserSocket = function(nickname) { + return sockets[nickname]; +}; + function Room(name) { var roomname = name; var totusers = 0; - var sockets = Object.create(null); var usersData = Object.create(null); var playedtracks = []; // Used to prevent the same song from playing twice in one game @@ -197,7 +202,7 @@ function Room(name) { var artworkUrl = null; var trackViewUrl = null; var finishline = 1; - var guesstime = false; + var allowedguess = false; var status = null; var songtimeleft = null; // Milliseconds var songcounter = 0; @@ -235,10 +240,6 @@ function Room(name) { } return false; }; - - var getUserSocket = function(nickname) { - return sockets[nickname]; - }; // A user requested an invalid name var invalidNickName = function(socket, feedback) { @@ -254,8 +255,8 @@ function Room(name) { else if (data.nickname === "Binb") { feedback = 'That name is reserved.'; } - else if (userExists(data.nickname)) { - feedback = 'That name is alredy taken.'; + else if (getUserSocket(data.nickname)) { + feedback = 'Name already taken.'; } if (feedback) { return invalidNickName(socket, feedback); @@ -281,7 +282,7 @@ function Room(name) { this.sendChatMessage = function (socket, data) { if (typeof data === "string") { var datalcase = data.toLowerCase(); - if (guesstime && (amatch(artistlcase, datalcase, true) || + if (allowedguess && (amatch(artistlcase, datalcase, true) || amatch(tracklcase, datalcase))) { var msg = "You are probably right, but you have to use the box above."; socket.emit('chatmsg', {from:"Binb",to:socket.nickname,chatmsg:msg}); @@ -326,7 +327,7 @@ function Room(name) { }; this.guess = function(socket, guess) { - if (guesstime) { + if (allowedguess) { if (!usersData[socket.nickname].matched) { // No track no artist if ((artistlcase === tracklcase) && amatch(tracklcase, guess, true)) { addPoints(socket, true); @@ -422,7 +423,7 @@ function Room(name) { io.sockets.in(roomname).emit('playtrack', {counter:songcounter,tot:config.songsinarun, users:usersData}); songTimeLeft(Date.now()+30000, 50); - guesstime = true; + allowedguess = true; setTimeout(sendTrackInfo, 30000); }; @@ -439,7 +440,7 @@ function Room(name) { trackName:trackName,collectionName:collectionName, trackViewUrl:trackViewUrl}); finishline = 1; - guesstime = false; + allowedguess = false; if (songcounter < config.songsinarun) { resetPoints(true); sendLoadTrack(); @@ -458,8 +459,7 @@ function Room(name) { }; this.sendStatus = function(socket) { - socket.emit('status', {status:status,timeleft:songtimeleft, - previewUrl:previewUrl}); + socket.emit('status', {status:status,timeleft:songtimeleft,previewUrl:previewUrl}); }; var reset = function() {