diff --git a/client/garageserver.io.js b/client/garageserver.io.js index e49d50e..9ac0712 100644 --- a/client/garageserver.io.js +++ b/client/garageserver.io.js @@ -1,6 +1,10 @@ /* options = { - + onUpdatePlayerPhysics: function (state), + onConnect: function() + onPlayerUpdate: function (data), + onPlayerDisconnect: function (id), + onPing: function (data), } */ @@ -26,17 +30,17 @@ window.GarageServerIO = (function (window, socketio) { registerSocketEvents = function (options) { socket.on('update', function(data) { - updatePlayerInput(data); + updatePlayerInput(data, options); }); - socket.on('ping', function(data) { + socket.on('ping', function(data, options) { }); - socket.on('removePlayer', function(id) { - removePlayer(id); + socket.on('removePlayer', function(id, options) { + removePlayer(id, options); }); }, - updatePlayerInput = function (data) { + updatePlayerInput = function (data, options) { var playerFound = false, updateFound = false, playerIdx = 0, @@ -56,7 +60,7 @@ window.GarageServerIO = (function (window, socketio) { } else { for (playerIdx = 0; playerIdx < players.length; playerIdx ++) { - if(players[playerIdx].id === data.id) { + if (players[playerIdx].id === data.id) { playerFound = true; for (updateIdx = 0; updateIdx < players[playerIdx].updates.length; updateIdx ++) { if (players[playerIdx].updates[updateIdx].seq === data.seq) { @@ -81,6 +85,10 @@ window.GarageServerIO = (function (window, socketio) { players.push(player); } } + + if (options.onPlayerUpdate) { + options.onPlayerUpdate(data); + } }, addPlayerInput = function (input) { @@ -94,13 +102,17 @@ window.GarageServerIO = (function (window, socketio) { socket.emit('input', { input: input, seq: sequenceNumber, timestamp: currentTime }); }, - removePlayer = function (id) { + removePlayer = function (id, options) { for (var i = 0; i < players.length; i ++) { if (players[i].id === id) { players.splice(i, 1)[0]; return; } } + + if (options.onPlayerDisconnect) { + options.onPlayerDisconnect(id); + } }; return { diff --git a/lib/server/garageserver.io.js b/lib/server/garageserver.io.js index 7f63c7c..bd59f8c 100644 --- a/lib/server/garageserver.io.js +++ b/lib/server/garageserver.io.js @@ -2,15 +2,14 @@ var garageServerGame = require('./garageservergame'); /* options = { - onUpdatePhysics(state, input), + onUpdatePhysics: function (state, input), physicsInterval: 15, playersInterval: 45, logging: true, - onPlayerConnect(socket), - onPlayerDisconnect(socket), - onPlayerInput(socket, input), - onPlayerDisconnect(socket), - onPing(socket, data), + onPlayerConnect: function (socket), + onPlayerInput: function (socket, input), + onPlayerDisconnect: function (socket), + onPing: function (socket, data), } */ @@ -26,27 +25,27 @@ GarageServer.prototype.registerSocketEvents = function (options) { self.io.of('/garageserver.io').on('connection', function (socket) { self.game = new garageServerGame.createGame(socket, options); - if(options.logging) { + if (options.logging) { console.log('garageserver.io:: socket ' + socket.id + ' connection'); } self.onPlayerConnect(socket, options); socket.on('disconnect', function () { - if(options.logging) { + if (options.logging) { console.log('garageserver.io:: socket ' + socket.id + ' disconnect'); } self.onPlayerDisconnect(socket, options); }); socket.on('input', function (data) { - if(options.logging) { + if (options.logging) { console.log('garageserver.io:: socket input ' + socket.id + ' ' + data.input + ' ' + data.seq); } self.onPlayerInput(socket, data, options); }); socket.on('ping', function (data) { - if(options.logging) { + if (options.logging) { console.log('garageserver.io:: socket ping'); } self.onPing(socket, data, options); @@ -56,7 +55,7 @@ GarageServer.prototype.registerSocketEvents = function (options) { GarageServer.prototype.onPlayerConnect = function (socket, options) { this.game.addPlayer(socket); - if(options.onPlayerConnect) { + if (options.onPlayerConnect) { options.onPlayerConnect(socket); } }; @@ -64,7 +63,7 @@ GarageServer.prototype.onPlayerConnect = function (socket, options) { GarageServer.prototype.onPlayerDisconnect = function (socket, options) { this.game.removePlayer(socket); socket.broadcast.emit('removePlayer', socket.id); - if(options.onPlayerDisconnect) { + if (options.onPlayerDisconnect) { options.onPlayerDisconnect(socket); } }; @@ -78,7 +77,7 @@ GarageServer.prototype.onPlayerInput = function (socket, input, options) { GarageServer.prototype.onPing = function(socket, data, options) { socket.emit('ping', data); - if(options.onPing) { + if (options.onPing) { options.onPing(socket, data); } }; diff --git a/lib/server/garageservergame.js b/lib/server/garageservergame.js index eb53c78..f444dfd 100644 --- a/lib/server/garageservergame.js +++ b/lib/server/garageservergame.js @@ -11,16 +11,16 @@ function GarageServerGame (socket, options) { GarageServerGame.prototype.updatePlayers = function () { var currentTime = new Date().getTime(); - for(var i = 0; i < this.players.length; i ++) { + for (var i = 0; i < this.players.length; i ++) { //TODO: Retink efficiency this.socket.emit('update', { id: this.players[i].client.id, state: this.players[i].state, seq: this.players[i].sequence, timestamp: currentTime }); } }; GarageServerGame.prototype.updatePhysics = function () { - for(var i = 0; i < this.players.length; i ++) { - if(this.players[i].inputs.length > 0) { - if(this.options.onUpdatePhysics) { + for (var i = 0; i < this.players.length; i ++) { + if (this.players[i].inputs.length > 0) { + if (this.options.onUpdatePhysics) { this.players[i].state = this.options.onUpdatePhysics(this.players[i].state, this.players[i].inputs); } this.players[i].inputs = []; @@ -30,8 +30,8 @@ GarageServerGame.prototype.updatePhysics = function () { }; GarageServerGame.prototype.addPlayer = function (client) { - for(var i = 0; i < this.players.length; i ++) { - if(this.players[i].client.id === client.id) { + for (var i = 0; i < this.players.length; i ++) { + if (this.players[i].client.id === client.id) { return; } } @@ -47,8 +47,8 @@ GarageServerGame.prototype.addPlayer = function (client) { }; GarageServerGame.prototype.removePlayer = function (client) { - for(var i = 0; i < this.players.length; i ++) { - if(this.players[i].client.id === client.id) { + for (var i = 0; i < this.players.length; i ++) { + if (this.players[i].client.id === client.id) { this.players.splice(i, 1)[0]; return; } @@ -56,8 +56,8 @@ GarageServerGame.prototype.removePlayer = function (client) { }; GarageServerGame.prototype.addPlayerInput = function (client, input) { - for(var i = 0; i < this.players.length; i ++) { - if(this.players[i].client.id === client.id) { + for (var i = 0; i < this.players.length; i ++) { + if (this.players[i].client.id === client.id) { this.players[i].inputs.push(input); return; }