]> git.example.dev Git - binbsis50.git/commitdiff
nickname is now saved in a session cookie
authorLuigi Pinca <luigipinca@gmail.com>
Wed, 4 Apr 2012 16:34:47 +0000 (18:34 +0200)
committerLuigi Pinca <luigipinca@gmail.com>
Wed, 4 Apr 2012 16:34:47 +0000 (18:34 +0200)
package.json
public/static/js/room.js
server.js

index cf61c4450732001d3a730e5a42eb717d44902bc8..11125da467ee2b77c8505f34cfddac83ea560374 100644 (file)
@@ -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
index 906d19a84fd07e7bbbcdfb01f90975b2722f121b..b422947fadec008dd43484cbbb96b3012e09d997 100644 (file)
        
        // Prompt for name and send it.
        var joinRoom = function(msg) {
-               if (!msg) {
-                       msg = "What's your name?";
-
-                       var html = '<div class="modal-header"><h3>You are joining the '+roomname+' room</h3></div>';
-                       html += '<div class="modal-body"><p>'+msg+'</p></div>';
-                       html += '<div class="modal-footer">';
-                       html += '<input id="login" class="" type="text" name="nickname" />';
-                       html += '<button id="join" class="btn btn-primary">';
-                       html += '<i class="icon-user icon-white"></i> Join the game</button></div>';
-
-                       $(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('<span class="label label-important">'+txt+'</span>');
-                               }
-                               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 = '<div class="modal-header"><h3>You are joining the '+roomname+' room</h3></div>';
+                               html += '<div class="modal-body"><p>'+(msg || "What's your name?")+'</p></div>';
+                               html += '<div class="modal-footer">';
+                               html += '<input id="login" class="" type="text" name="nickname" />';
+                               html += '<button id="join" class="btn btn-primary">';
+                               html += '<i class="icon-user icon-white"></i> Join the game</button></div>';
+
+                               $(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('<span class="label label-important">'+txt+'</span>');
+                                       }
+                                       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+"<br/>Try again:");
+               joinRoom(feedback+"<br/>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";
                                        }
                                },
                                swfPath: "/static/swf/",
+                               solution: "flash, html",
                                supplied: "m4a",
                                preload: "auto",
                                volume: 1
index 95a91aaf83d942e8702a968d6556cf16c31fa66c..9b91ab5f8b400d1c3b302a6509199a36c151fc6b 100644 (file)
--- 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 = '<span class="label label-important">That name is reserved.</span>';
                }
-               else if (userExists(data.nickname)) {
-                       feedback = '<span class="label label-important">That name is alredy taken.</span>';
+               else if (getUserSocket(data.nickname)) {
+                       feedback = '<span class="label label-important">Name already taken.</span>';
                }
                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() {