Files
GarageServer.IO/lib/server/garageserver.io.js
T
2013-06-01 15:44:26 -04:00

72 lines
2.2 KiB
JavaScript

var garageServerGame = require('./garageservergame');
function GarageServer (socketio, options) {
this.io = socketio;
this.registerSocketEvents(options);
this.game = new garageServerGame.createGame(socketio, options);
}
GarageServer.prototype.registerSocketEvents = function (options) {
var self = this;
self.io.of('/garageserver.io').on('connection', function (socket) {
if(options.logging) {
console.log('garageserver.io:: socket ' + socket.id + ' connection');
}
self.onPlayerConnect(socket, options);
socket.on('disconnect', function () {
if(options.logging) {
console.log('garageserver.io:: socket ' + socket.id + ' disconnect');
}
self.onPlayerDisconnect(socket, options);
});
socket.on('input', function (data) {
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) {
console.log('garageserver.io:: socket ping');
}
self.onPing(socket, data, options);
});
});
};
GarageServer.prototype.onPlayerConnect = function (socket, options) {
this.game.addPlayer(socket);
if(options.onPlayerConnect) {
options.onPlayerConnect(socket);
}
};
GarageServer.prototype.onPlayerDisconnect = function (socket, options) {
this.game.removePlayer(socket);
socket.broadcast.emit('removePlayer', socket.id);
if(options.onPlayerDisconnect) {
options.onPlayerDisconnect(socket);
}
};
GarageServer.prototype.onPlayerInput = function (socket, input, options) {
this.game.addPlayerInput(socket, input);
if(options.onPlayerInput) {
options.onPlayerInput(socket, input);
}
};
GarageServer.prototype.onPing = function(socket, data, options) {
socket.emit('ping', data);
if(options.onPing) {
options.onPing(socket, data);
}
};
exports.createGarageServer = function (io, options){
return new GarageServer(io, options);
};