mirror of
https://github.com/wassname/GarageServer.IO.git
synced 2026-08-01 12:11:03 +08:00
Finished initial server refactor for #17
This commit is contained in:
+9
-2
@@ -7,12 +7,13 @@ function Game (sockets) {
|
||||
this.physicsInterval = 15;
|
||||
this.physicsDelta = this.physicsInterval / 1000;
|
||||
this.physicsIntervalId = 0;
|
||||
|
||||
|
||||
this.server = garageServer.createGarageServer(sockets,
|
||||
{
|
||||
logging: true,
|
||||
interpolation: true,
|
||||
clientSidePrediction: true,
|
||||
smoothingFactor: this.physicsDelta * 20,
|
||||
onUpdatePlayerPhysics: gamePhysics.onUpdatePlayerPhysics,
|
||||
onUpdateEntityPhysics: gamePhysics.onUpdateEntityPhysics
|
||||
});
|
||||
@@ -20,10 +21,16 @@ function Game (sockets) {
|
||||
|
||||
Game.prototype.start = function () {
|
||||
var self = this;
|
||||
this.server.start();
|
||||
this.physicsIntervalId = setInterval(function () { self.update(); }, this.physicsInterval);
|
||||
this.server.start();
|
||||
};
|
||||
|
||||
Game.prototype.update = function () {
|
||||
var players = this.server.getPlayers(),
|
||||
self = this;
|
||||
|
||||
players.forEach(function (player) {
|
||||
var newState = gamePhysics.getNewPlayerState(player.state, player.inputs, self.physicsDelta);
|
||||
self.server.updatePlayerState(player.id, newState);
|
||||
});
|
||||
};
|
||||
@@ -21,6 +21,27 @@
|
||||
return state;
|
||||
};
|
||||
|
||||
exports.getNewPlayerState = function (state, inputs, deltaTime) {
|
||||
var i = 0;
|
||||
|
||||
if (!state.x && !state.y) {
|
||||
state.x = 0;
|
||||
state.y = 0;
|
||||
}
|
||||
for (i = 0; i < inputs.length; i ++) {
|
||||
if (inputs[i].input === 'left') {
|
||||
state.x -= (50 * deltaTime);
|
||||
} else if (inputs[i].input === 'right') {
|
||||
state.x += (50 * deltaTime);
|
||||
} else if (inputs[i].input === 'down') {
|
||||
state.y += (50 * deltaTime);
|
||||
} else if (inputs[i].input === 'up') {
|
||||
state.y -= (50 * deltaTime);
|
||||
}
|
||||
}
|
||||
return state;
|
||||
};
|
||||
|
||||
exports.onUpdateEntityPhysics = function (id, state, deltaTime) {
|
||||
if (!state.x && !state.y) {
|
||||
state.x = 0;
|
||||
|
||||
@@ -108,7 +108,15 @@ GarageServer.prototype.onPlayerState = function (socket, data, options) {
|
||||
};
|
||||
|
||||
GarageServer.prototype.start = function () {
|
||||
|
||||
this.game.start();
|
||||
};
|
||||
|
||||
GarageServer.prototype.getPlayers = function () {
|
||||
return this.game.getPlayers();
|
||||
};
|
||||
|
||||
GarageServer.prototype.updatePlayerState = function (id, state) {
|
||||
this.game.updatePlayerState(id, state);
|
||||
};
|
||||
|
||||
exports.createGarageServer = function (io, options) {
|
||||
|
||||
@@ -60,23 +60,26 @@ GarageServerGame.prototype.updatePhysics = function (options) {
|
||||
});
|
||||
};
|
||||
|
||||
GarageServerGame.prototype.getPlayerInputs = function (id) {
|
||||
var inputs;
|
||||
GarageServerGame.prototype.getPlayers = function () {
|
||||
return this.playerController.entities;
|
||||
};
|
||||
|
||||
this.playerController.entities.forSome(function (player) {
|
||||
GarageServerGame.prototype.getPlayer = function (id) {
|
||||
var playerFound;
|
||||
|
||||
this.playerController.entities.some(function (player) {
|
||||
if (player.id === id) {
|
||||
inputs = player.inputs;
|
||||
playerFound = player;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
return inputs;
|
||||
return playerFound;
|
||||
};
|
||||
|
||||
GarageServerGame.prototype.updatePlayerState = function (id, state) {
|
||||
var currentTime = new Date().getTime() - this.startTime;
|
||||
|
||||
this.playerController.entities.forSome(function (player) {
|
||||
this.playerController.entities.some(function (player) {
|
||||
if (player.id === id) {
|
||||
player.addState(state, currentTime);
|
||||
player.sequence += player.inputs.length;
|
||||
|
||||
Reference in New Issue
Block a user