mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
gameCommand implementation
This commit is contained in:
parent
6219a82fbd
commit
c4c48ab821
10 changed files with 62 additions and 39 deletions
|
|
@ -1,4 +1,10 @@
|
||||||
define(["Game/Core/Control/InputController", "Game/Client/Control/KeyboardInput"], function (InputController, KeyboardInput) {
|
define([
|
||||||
|
"Game/Core/Control/InputController",
|
||||||
|
"Game/Client/Control/KeyboardInput",
|
||||||
|
"Game/Core/NotificationCenter"
|
||||||
|
],
|
||||||
|
|
||||||
|
function (InputController, KeyboardInput, NotificationCenter) {
|
||||||
|
|
||||||
function KeyboardController (me, gameController) {
|
function KeyboardController (me, gameController) {
|
||||||
|
|
||||||
|
|
@ -42,22 +48,22 @@ define(["Game/Core/Control/InputController", "Game/Client/Control/KeyboardInput"
|
||||||
|
|
||||||
KeyboardController.prototype.moveLeft = function () {
|
KeyboardController.prototype.moveLeft = function () {
|
||||||
this.inputController.moveLeft();
|
this.inputController.moveLeft();
|
||||||
this.gameController.sendGameCommand('moveLeft');
|
NotificationCenter.trigger('sendGameCommand', 'moveLeft');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.moveRight = function () {
|
KeyboardController.prototype.moveRight = function () {
|
||||||
this.inputController.moveRight();
|
this.inputController.moveRight();
|
||||||
this.gameController.sendGameCommand('moveRight');
|
NotificationCenter.trigger('sendGameCommand', 'moveRight');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.stop = function () {
|
KeyboardController.prototype.stop = function () {
|
||||||
this.inputController.stop();
|
this.inputController.stop();
|
||||||
this.gameController.sendGameCommand('stop');
|
NotificationCenter.trigger('sendGameCommand', 'stop');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.jump = function () {
|
KeyboardController.prototype.jump = function () {
|
||||||
this.inputController.jump();
|
this.inputController.jump();
|
||||||
this.gameController.sendGameCommand('jump');
|
NotificationCenter.trigger('sendGameCommand', 'jump');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.jumped = function () {
|
KeyboardController.prototype.jumped = function () {
|
||||||
|
|
@ -70,7 +76,7 @@ define(["Game/Core/Control/InputController", "Game/Client/Control/KeyboardInput"
|
||||||
|
|
||||||
KeyboardController.prototype.duck = function () {
|
KeyboardController.prototype.duck = function () {
|
||||||
this.inputController.duck();
|
this.inputController.duck();
|
||||||
this.gameController.sendGameCommand('duck');
|
NotificationCenter.trigger('sendGameCommand', 'duck');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.standUp = function () {
|
KeyboardController.prototype.standUp = function () {
|
||||||
|
|
@ -79,7 +85,7 @@ define(["Game/Core/Control/InputController", "Game/Client/Control/KeyboardInput"
|
||||||
|
|
||||||
KeyboardController.prototype.activateShift = function () {
|
KeyboardController.prototype.activateShift = function () {
|
||||||
this.inputController.activateShift();
|
this.inputController.activateShift();
|
||||||
this.gameController.sendGameCommand('activateShift');
|
NotificationCenter.trigger('sendGameCommand', 'activateShift');
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyboardController.prototype.deactivateShift = function () {
|
KeyboardController.prototype.deactivateShift = function () {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,9 @@ function (Parent, PhysicsEngine, ViewController, KeyboardController, Notificatio
|
||||||
|
|
||||||
GameController.prototype = Object.create(Parent.prototype);
|
GameController.prototype = Object.create(Parent.prototype);
|
||||||
|
|
||||||
|
GameController.prototype.destruct = function() {
|
||||||
|
//destroy box2d world etc.
|
||||||
|
};
|
||||||
|
|
||||||
GameController.prototype.getMe = function () {
|
GameController.prototype.getMe = function () {
|
||||||
return this.me;
|
return this.me;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
define([
|
define([
|
||||||
"Game/Core/Protocol/Helper",
|
"Game/Core/Protocol/Helper",
|
||||||
"Game/Client/GameController",
|
"Game/Client/GameController",
|
||||||
"Game/Core/User"
|
"Game/Core/User",
|
||||||
|
"Game/Core/NotificationCenter"
|
||||||
],
|
],
|
||||||
|
|
||||||
function (ProtocolHelper, GameController, User) {
|
function (ProtocolHelper, GameController, User, NotificationCenter) {
|
||||||
|
|
||||||
function Networker (socketLink) {
|
function Networker (socketLink) {
|
||||||
this.socketLink = socketLink;
|
this.socketLink = socketLink;
|
||||||
|
|
@ -29,6 +30,7 @@ function (ProtocolHelper, GameController, User) {
|
||||||
self.onDisconnect();
|
self.onDisconnect();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
NotificationCenter.on("sendGameCommand", this.sendGameCommand, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Networker.prototype.onConnect = function () {
|
Networker.prototype.onConnect = function () {
|
||||||
|
|
@ -123,6 +125,11 @@ function (ProtocolHelper, GameController, User) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Networker.prototype.sendGameCommand = function(command, options) {
|
||||||
|
var message = ProtocolHelper.encodeCommand(command, options);
|
||||||
|
this.sendCommand('gameCommand', message);
|
||||||
|
};
|
||||||
|
|
||||||
return Networker;
|
return Networker;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -20,37 +20,17 @@
|
||||||
this.gameController.loadLevel("default.json");
|
this.gameController.loadLevel("default.json");
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
var self = this;
|
var self = this;
|
||||||
NotificationCenter.on("processGameCommandFromUser", function (topic, args) {
|
NotificationCenter.on("processGameCommandFromUser", function (topic, args) {
|
||||||
self.processGameCommandFromUser.apply(self, args);
|
self.processGameCommandFromUser.apply(self, args);
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
NotificationCenter.on('channel/message', function (message) {
|
NotificationCenter.on('channel/message', function (message) {
|
||||||
|
ProtocolHelper.runCommands(message.data, function (command, options) {
|
||||||
switch(message.recipient) {
|
self[command].call(self, options);
|
||||||
case 'user':
|
});
|
||||||
console.log(message);
|
|
||||||
var user = self.users[message.id];
|
|
||||||
ProtocolHelper.runCommands(message.data, function (command, options) {
|
|
||||||
user[command].call(user, options);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'id': // Do nothing, it is needed by the user
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'channel':
|
|
||||||
ProtocolHelper.runCommands(message.data, function (command, options) {
|
|
||||||
self[command].call(self, options);
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw 'unknown recipient';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
NotificationCenter.on('sendControlCommandToAllUsers', this.sendControlCommandToAllUsers, this);
|
NotificationCenter.on('sendControlCommandToAllUsers', this.sendControlCommandToAllUsers, this);
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,10 @@ function (Parent, PhysicsEngine, Settings, InputController, requestAnimFrame, No
|
||||||
|
|
||||||
var id = user.id;
|
var id = user.id;
|
||||||
var player = this.players[id];
|
var player = this.players[id];
|
||||||
|
user.setPlayer(player);
|
||||||
player.spawn(50, 50);
|
player.spawn(50, 50);
|
||||||
this.inputControllers[id] = new InputController(player);
|
this.inputControllers[id] = new InputController(player);
|
||||||
|
player.inputController = this.inputControllers[id]; // FIXME move this to Server/Player
|
||||||
}
|
}
|
||||||
|
|
||||||
GameController.prototype.userLeft = function (user) {
|
GameController.prototype.userLeft = function (user) {
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ function (NotificationCenter, Channel) {
|
||||||
};
|
};
|
||||||
|
|
||||||
PipeToLobby.prototype.onMessage = function (message) {
|
PipeToLobby.prototype.onMessage = function (message) {
|
||||||
NotificationCenter.trigger(message.recipient + '/message', message);
|
NotificationCenter.trigger(message.recipient + '/message', message);
|
||||||
}
|
}
|
||||||
|
|
||||||
return PipeToLobby;
|
return PipeToLobby;
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ function(Parent, NotificationCenter, ProtocolHelper) {
|
||||||
Parent.call(this, id);
|
Parent.call(this, id);
|
||||||
|
|
||||||
this.channel = channel;
|
this.channel = channel;
|
||||||
|
this.player = null;
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
NotificationCenter.on('user/joined', function(user) {
|
NotificationCenter.on('user/joined', function(user) {
|
||||||
|
|
@ -21,6 +22,12 @@ function(Parent, NotificationCenter, ProtocolHelper) {
|
||||||
NotificationCenter.on('user/' + this.id + "/joinSuccess", function(options) {
|
NotificationCenter.on('user/' + this.id + "/joinSuccess", function(options) {
|
||||||
self.sendControlCommand("joinSuccess", options);
|
self.sendControlCommand("joinSuccess", options);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
NotificationCenter.on('user/' + this.id + "/message", function(message) { // FIXME: right now only game commands?
|
||||||
|
ProtocolHelper.runCommands(message.data, function (command, options) {
|
||||||
|
self.gameCommand(command, options);
|
||||||
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
User.prototype = Object.create(Parent.prototype);
|
User.prototype = Object.create(Parent.prototype);
|
||||||
|
|
@ -37,6 +44,14 @@ function(Parent, NotificationCenter, ProtocolHelper) {
|
||||||
this.sendControlCommand("gameCommand", data);
|
this.sendControlCommand("gameCommand", data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
User.prototype.gameCommand = function(command, options) {
|
||||||
|
this.player.inputController[command].call(this.player.inputController);
|
||||||
|
};
|
||||||
|
|
||||||
|
User.prototype.setPlayer = function(player) {
|
||||||
|
this.player = player;
|
||||||
|
};
|
||||||
|
|
||||||
return User;
|
return User;
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
@ -84,6 +84,10 @@ function (User, Channel, PipeToChannel, NotificationCenter) {
|
||||||
NotificationCenter.on('user/left', function (user) {
|
NotificationCenter.on('user/left', function (user) {
|
||||||
channelPipe.send('channel', { releaseUser: user.id });
|
channelPipe.send('channel', { releaseUser: user.id });
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
|
NotificationCenter.on('user/gameCommand', function (userId, data) {
|
||||||
|
channelPipe.sendToUser(userId, data);
|
||||||
|
}, this);
|
||||||
|
|
||||||
return channelPipe;
|
return channelPipe;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,15 @@ function (NotificationCenter, childProcess) {
|
||||||
this.channelPipe.send(message);
|
this.channelPipe.send(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PipeToChannel.prototype.sendToUser = function (id, data) {
|
||||||
|
var message = {
|
||||||
|
recipient: "user/" + id,
|
||||||
|
data: data
|
||||||
|
}
|
||||||
|
|
||||||
|
this.channelPipe.send(message);
|
||||||
|
}
|
||||||
|
|
||||||
PipeToChannel.prototype.onMessage = function (message) {
|
PipeToChannel.prototype.onMessage = function (message) {
|
||||||
NotificationCenter.trigger(message.recipient + '/message', message.data);
|
NotificationCenter.trigger(message.recipient + '/message', message.data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,10 +54,7 @@ function (Parent, ProtocolHelper, NotificationCenter) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'gameCommand':
|
case 'gameCommand':
|
||||||
for(var gameCommand in options) {
|
NotificationCenter.trigger("user/gameCommand", this.id, options);
|
||||||
//NotificationCenter.trigger("processGameCommandFromUser", [gameCommand, options[gameCommand], this]);
|
|
||||||
//this.channel.processGameCommandFromUser(gameCommand, options[gameCommand], this);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue