Files
GarageServer.IO/client/garageserver.io.js
T
2013-06-01 15:49:49 -04:00

86 lines
2.1 KiB
JavaScript

window.GarageServerIO = (function (window, socketio) {
var io = socketio,
socket = null,
sequenceNumber = 1,
players = [],
inputs = [],
updates = [],
// TODO: DONE CALLBACK
connectToGarageServer = function (path, options) {
socket = io.connect(path + '/garageserver.io');
registerSocketEvents(options);
},
registerSocketEvents = function (options) {
socket.on('update', function(data) {
if(options.logging) {
console.log('garageserver.io:: socket update ' + ' ' + data.id + ' ' + data.state + ' ' + data.seq);
}
updatePlayerInput(data);
});
socket.on('ping', function(data) {
});
socket.on('removePlayer', function(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) {
players.splice(i, 1)[0];
return;
}
}
};
return {
connectToGarageServer: connectToGarageServer,
addPlayerInput: addPlayerInput
};
}) (window, io);