diff --git a/client/garageserver.io.js b/client/garageserver.io.js index 830ba3c..62f7e73 100644 --- a/client/garageserver.io.js +++ b/client/garageserver.io.js @@ -1,46 +1,71 @@ window.GarageServerIO = (function (window, socketio) { - + var io = socketio, - + socket = null, - - sequenceNumber = 0, - + + sequenceNumber = 1, + players = [], - + + inputs = [], + updates = [], - + // TODO: DONE CALLBACK connectToGarageServer = function (path, options) { socket = io.connect(path + '/garageserver.io'); registerSocketEvents(); }, - + registerSocketEvents = function () { socket.on('update', function(data) { - if(addPlayerInput) { - addPlayerInput(data); - } + updatePlayerInput(data); }); socket.on('ping', function(data) { }); socket.on('removePlayer', function(id) { - if(removePlayer) { - removePlayer(id); - } + removePlayer(id); }); }, - + + updatePlayerInput = function (data) { + var playerFound = false; + + if(socket.id === data.id) { + updates.push(data); + } + else { + for(var i = 0; i < players.length; i ++) { + if(players[i].id === data.id) { + playerFound = true; + players[i].state = data.state; + players[i].seq = data.seq; + } + } + + if(!playerFound) { + var player = { + id: data.id, + state: data.state, + seq: data.seq + }; + players.push(player); + } + } + }, + addPlayerInput = function (input) { sequenceNumber += 1; + inputs.push(input); sendPlayerInput(input); }, - + sendPlayerInput = function (input) { socket.emit('input', { input: input, seq: sequenceNumber }); }, - + removePlayer = function (id) { for(var i = 0; i < players.length; i ++) { if(players[i].id === id) { @@ -49,11 +74,10 @@ window.GarageServerIO = (function (window, socketio) { } } }; - + return { connectToGarageServer: connectToGarageServer, - addPlayerInput: addPlayerInput, - sendPlayerInput: sendPlayerInput + addPlayerInput: addPlayerInput }; }) (window, io); \ No newline at end of file diff --git a/lib/server/garageserver.io.js b/lib/server/garageserver.io.js index e3baf37..8501b9a 100644 --- a/lib/server/garageserver.io.js +++ b/lib/server/garageserver.io.js @@ -18,9 +18,9 @@ GarageServer.prototype.registerSocketEvents = function (options) { self.onPlayerDisconnect(socket, options); }); - socket.on('input', function (input) { - console.log('garageserver.io:: socket input ' + input); - self.onPlayerInput(socket, input, options); + socket.on('input', function (data) { + console.log('garageserver.io:: socket input ' + socket.id + ' ' + data.input + ' ' + data.seq); + self.onPlayerInput(socket, data, options); }); socket.on('ping', function (data) { diff --git a/lib/server/garageservergame.js b/lib/server/garageservergame.js index 0971bcc..806a459 100644 --- a/lib/server/garageservergame.js +++ b/lib/server/garageservergame.js @@ -38,7 +38,7 @@ GarageServerGame.prototype.addPlayer = function (client) { client: client, state: {}, inputs: [], - sequence: 0 + sequence: 1 }; this.players.push(player);