diff options
Diffstat (limited to 'server.js')
| -rw-r--r-- | server.js | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -88,9 +88,11 @@ function Channel() { // CHATROOM STUFF Channel.prototype.join = function(user, socket){ + this.players[ socket.id ] = user; this.playerCount++; } -Channel.prototype.part = function(){ +Channel.prototype.part = function(socket){ + delete this.players[ socket.id ]; this.playerCount = Math.max( 0, this.playerCount - 1 ); } Channel.prototype.pushMessage = function(message){ @@ -165,27 +167,31 @@ Channel.prototype.startWinning = function(){ this.setTimeout( this.startDrawing, Delay.WINNING ); } Channel.prototype.startWaiting = function(){ + this.images = {}; + this.imageCount = 0; this.state = State.WAITING; io.sockets.emit( 'event-state', this.getState() ); } - var game = new Channel (); io.sockets.on( 'connection', function(socket){ socket.emit( 'event-welcome', game.report() ); socket.on( 'event-join', function(data){ + data.id = socket.id; + socket.user = data; game.join(data, socket); game.checkState(); - socket.broadcast.emit('event-join', data); + io.sockets.emit('event-join', data); } ); socket.on( 'event-message', function(data){ game.pushMessage(data); socket.broadcast.emit('event-message', data); } ); - socket.on( 'disconnect', function(data){ - game.part(data, socket); + socket.on( 'disconnect', function(){ + var user = socket.user; + game.part(socket); game.checkState(); - socket.broadcast.emit('event-part', data); + socket.broadcast.emit('event-part', user); } ); }); |
