]> git.example.dev Git - binbsis50.git/commitdiff
added some tweaks to prevent users from cheating easily
authorLuigi Pinca <luigipinca@gmail.com>
Wed, 10 Apr 2013 13:34:27 +0000 (15:34 +0200)
committerLuigi Pinca <luigipinca@gmail.com>
Wed, 10 Apr 2013 13:34:27 +0000 (15:34 +0200)
lib/room.js
public/js/app.js

index ac71a5f16c32253cb621e8ffeed71791664a4710..2521c31cd51df3712e5b61b69c348fa0578a9316 100644 (file)
@@ -32,8 +32,7 @@ module.exports = function(options) {
 
 function Room(roomname) {
 
-  var allowedguess = false
-    , artist // Artists in lowercase
+  var artist // Artists in lowercase
     , artistName
     , artworkUrl
     , feat // Featured artists
@@ -182,7 +181,7 @@ function Room(roomname) {
 
   // A user is sending a guess
   this.guess = function(socket, guess) {
-    if (allowedguess) {
+    if (status === 0) {
       if (!usersData[socket.nickname].matched) { // No track no artist
         if ((artist === title) && amatch(title, guess, true)) {
           addPointsAndStats(socket.nickname, true);
@@ -241,9 +240,6 @@ function Room(roomname) {
         socket.emit('stoptrying');
       }
     }
-    else {
-      socket.emit('noguesstime');
-    }
   };
 
   this.ignore = function(who, executor, callback) {
@@ -322,7 +318,7 @@ function Room(roomname) {
     }
     // Censor answers from chat
     var msglcase = msg.toLowerCase();
-    if (allowedguess && (amatch(artist, msglcase, true) ||
+    if (status === 0 && (amatch(artist, msglcase, true) ||
         (feat && amatch(feat, msglcase, true)) || amatch(title, msglcase))) {
       var notice = 'You are probably right, but you have to use the box above.';
       socket.emit('chatmsg', notice, 'binb', socket.nickname);
@@ -375,7 +371,6 @@ function Room(roomname) {
     };
     io.sockets.in(roomname).emit('playtrack', data);
     songTimeLeft(Date.now() + 30000, 50);
-    allowedguess = true;
     setTimeout(sendTrackInfo, 30000);
   };
 
@@ -398,7 +393,6 @@ function Room(roomname) {
     };
     io.sockets.in(roomname).emit('trackinfo', trackinfo);
     finishline = 1;
-    allowedguess = false;
 
     if (songcounter < config.songsinarun) {
       resetPoints(true);
index 4ea11d1f0c50eb1400333f3d8ec19783e3eb8e9b..ac8a2c27a5530d62b5fcd74751827e437659528f 100644 (file)
@@ -5,6 +5,7 @@
     , historycursor = 0
     , historyvalues = []
     , ignoredplayers = {}
+    , isplaying
     , jplayer
     , nickname
     , pvtmsgto
       touchplay.removeClass('btn-success').addClass('btn-danger disabled');
       touchplay.html('<i class="icon-play icon-white"></i> Wait');
     }
+    isplaying = false;
     cassetteAnimation(Date.now()+5000, false);
 
     var artistName = data.artistName.replace(/"/g, '&quot;')
     }
     jplayer.jPlayer('unmute');
     jplayer.jPlayer('play');
+    DOM.guessbox.val('');
+    isplaying = true;
     updateUsers(data.users);
     cassetteAnimation(Date.now()+30000, true);
     if (data.counter === 1) {
         case 13: // return
           var guess = $.trim(DOM.guessbox.val());
           if (guess !== '') {
-            socket.emit('guess', guess.toLowerCase());
+            if (isplaying) {
+              socket.emit('guess', guess.toLowerCase());
+            }
+            else {
+              addFeedback('You have to wait the next song...');
+            }
             historyvalues.push(guess);
             if (historyvalues.length > 20) {
               historyvalues.splice(0, 1);
       }
     });
 
+    DOM.guessbox.on('paste', function(event) {
+      event.preventDefault();
+    });
+
     DOM.guessbox.focus();
 
     socket.on('artistmatched', function() {
     socket.on('gameover', gameOver);
     socket.on('loadtrack', loadTrack);
     socket.on('newuser', userJoin);
-    socket.on('noguesstime', function() {
-      addFeedback('You have to wait the next song...');
-    });
     socket.on('nomatch', function() {
       addFeedback(nmstrings[Math.floor(Math.random()*nmstrings.length)], 'wrong');
     });
 
   var setStatus = function(data) {
     if (data.status === 0) {
+      isplaying = true;
       cassetteAnimation(Date.now()+data.timeleft, true);
     }
     else if (data.status === 1) {
       e.preventDefault();
     }
   });
-  socket = io.connect(uri, {'reconnect':false});
+  socket = io.connect(uri, {
+    'force new connection': true,
+    'reconnect': false
+  });
   socket.on('connect', function() {
     jplayer = $('#player').jPlayer({
       ready: jplayerReady,