chuck.js/app/Game/Core/Player.js
2014-01-20 16:22:31 +01:00

94 lines
2.2 KiB
JavaScript
Executable file

define([
"Game/" + GLOBALS.context + "/GameObjects/Doll",
"Game/Config/Settings"
],
function (Doll, Settings) {
function Player (id, physicsEngine) {
this.physicsEngine = physicsEngine;
this.playerController = null;
this.doll;
this.id = id;
this.isSpawned = false;
this.holdingItem = null;
}
Player.prototype.getDoll = function() {
return this.doll;
};
Player.prototype.spawn = function (x, y) {
this.doll = new Doll(this.physicsEngine, "doll-" + this.id, this);
this.doll.spawn(x, y);
this.isSpawned = true;
}
Player.prototype.getPosition = function () {
if(!this.doll) return false;
return this.doll.getPosition();
}
Player.prototype.getHeadPosition = function () {
if(!this.doll) return false;
return this.doll.getHeadPosition();
}
Player.prototype.move = function (direction) {
this.doll.move(direction);
}
Player.prototype.stop = function () {
this.doll.stop();
}
Player.prototype.jump = function () {
this.doll.jump();
}
Player.prototype.lookAt = function (x, y) {
if(this.doll) this.doll.lookAt(x, y);
}
Player.prototype.handAction = function(x, y, isHolding, item) {
if (isHolding) {
// throw
if(item.isReleasingAllowed()) {
item.beingReleased(this);
this.doll.throw(item, x, y);
this.holdingItem = null;
}
} else {
// take
if(item.isGrabbingAllowed()) {
item.beingGrabbed(this);
this.doll.grab(item);
this.holdingItem = item;
}
}
};
Player.prototype.update = function () {
if(this.doll) {
this.doll.update();
}
if(this.playerController) {
this.playerController.update();
}
}
Player.prototype.destroy = function () {
this.doll.destroy();
}
Player.prototype.setPlayerController = function(playerController) {
this.playerController = playerController;
}
return Player;
});