summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2013-01-24 19:18:28 -0500
committerJules Laplace <jules@okfoc.us>2013-01-24 19:18:28 -0500
commit23eadca9dae3a06c058e4090cc87d75792c81db9 (patch)
treee374074f9236da5213deeb4099c9852f0d522b8a
parent5113f6d46a35e11c9b75d201b4fd6b85524d0a81 (diff)
user removal bug
-rw-r--r--app.js14
-rw-r--r--public/javascripts/game.js35
2 files changed, 32 insertions, 17 deletions
diff --git a/app.js b/app.js
index c206271..5dbb1aa 100644
--- a/app.js
+++ b/app.js
@@ -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 )
}