diff options
| -rw-r--r-- | app.js | 14 | ||||
| -rw-r--r-- | public/javascripts/game.js | 35 |
2 files changed, 32 insertions, 17 deletions
@@ -148,14 +148,14 @@ timeout = setInterval(function(){ io.sockets.on('connection', function (socket) { - getHighScores(function(err, users) { + getHighScores(function(err, scoreUsers) { scores = []; - for (var i = 0; i < users.length; i++) { + for (var i = 0; i < scoreUsers.length; i++) { scores.push({ - firstname: users[i].firstname, - lastname: users[i].lastname, - count: users[i].count, - id: users[i].id + firstname: scoreUsers[i].firstname, + lastname: scoreUsers[i].lastname, + count: scoreUsers[i].count, + id: scoreUsers[i].id }); } socket.emit('scores', { @@ -201,7 +201,7 @@ io.sockets.on('connection', function (socket) { }); socket.on('mouse', function(data){ - if (! socket.user || ! data || ! data.x || ! data.y) return; + if (! socket.user || ! data || ! data.x || ! data.y || !( socket.user.id in users )) return; users[socket.user.id].x = data.x; users[socket.user.id].y = data.y; io.sockets.volatile.emit('mouse', data); diff --git a/public/javascripts/game.js b/public/javascripts/game.js index 3839a40..7ac3926 100644 --- a/public/javascripts/game.js +++ b/public/javascripts/game.js @@ -41,6 +41,7 @@ var game = { UI.updateScores(data); }); socket.on('mouse', function(data){ + console.log(data.id, data.id in users); if (data.id != _id && data.id in users) { users[data.id].cursor.el.css({ 'margin-right': -data.x, 'margin-bottom': -data.y }); } @@ -104,17 +105,12 @@ var UI = { updateUsers: function(data) { console.log(data.users); var now = data.now; - $("#count").html(Object.keys(data.users).length); - for (var i in users) { - if (!( i in data.users )) { - if (users[i].cursor) { - users[i].cursor.remove(); - } - delete users[i]; - } - } + + var seen_ids = {}; + for (var i in data.users) { var user = data.users[i]; + seen_ids[ user.id ] = true; if (!( user.id in users )) { users[user.id] = user; if (user.id != _id && ! user.cursor) { @@ -133,6 +129,16 @@ var UI = { } } + + for (var id in users) { + if (!( id in seen_ids )) { + if (users[id].cursor) { + users[id].cursor.remove(); + } + delete users[id]; + } + } + }, updateScores: function(data){ @@ -157,6 +163,7 @@ function Score ( user ) { base.id = user.id; base.count = user.count; + base.current = user.count; base.name = $("<span>"); base.name.addClass("name"); @@ -174,7 +181,12 @@ function Score ( user ) { } base.update = function(howlong){ - base.time.html( timeInWords( base.count + howlong ) ); + base.current = base.count + howlong + base.time.html( timeInWords( base.current ) ); + } + + base.save = function(){ + base.count = base.current; } base.add(); @@ -244,6 +256,9 @@ function Cursor ( user, now ) { } base.remove = function(){ + if (base.score) { + base.score.save(); + } base.el.remove(); cursors.splice( cursors.indexOf(base), 1 ) } |
