added zooming with +, - and 0

This commit is contained in:
logsol 2014-07-07 23:32:11 +02:00
parent cc8cf6c5f9
commit ac27da1e31
7 changed files with 82 additions and 12 deletions

View file

@ -30,6 +30,7 @@ function (Key) {
}
KeyboardInput.prototype._onKeyDown = function (e) {
console.log(e.keyCode)
var key = this._getKeyByKeyCode(e.keyCode);
if (key && !key.getActive()) {

View file

@ -38,7 +38,11 @@ function (Parent, KeyboardInput, MouseInput, Nc, GamepadInput) {
space: 32,
tab: 9
tab: 9,
plus: 187,
minus: 189,
zero: 48
}
this.init(keys);
@ -63,6 +67,10 @@ function (Parent, KeyboardInput, MouseInput, Nc, GamepadInput) {
this.keyboardInput.registerKey(keys.up, 'jump', 'jumpStop');
this.keyboardInput.registerKey(keys.space, 'jump', 'jumpStop');
this.keyboardInput.registerKey(keys.plus, 'zoomIn');
this.keyboardInput.registerKey(keys.minus, 'zoomOut');
this.keyboardInput.registerKey(keys.zero, 'zoomReset');
this.keyboardInput.registerKey(keys.tab, 'showInfo', 'hideInfo');
this.keyboardInput.registerKey(keys.f, 'handActionLeft');
@ -127,6 +135,18 @@ function (Parent, KeyboardInput, MouseInput, Nc, GamepadInput) {
Nc.trigger(Nc.ns.client.game.gameInfo.toggle, false);
};
PlayerController.prototype.zoomIn = function() {
Nc.trigger(Nc.ns.client.game.zoomIn, true);
};
PlayerController.prototype.zoomOut = function() {
Nc.trigger(Nc.ns.client.game.zoomOut, false);
};
PlayerController.prototype.zoomReset = function() {
Nc.trigger(Nc.ns.client.game.zoomReset, false);
};
PlayerController.prototype.destroy = function() {
Nc.offAll(this.ncTokens);
Parent.prototype.destroy.call(this);

View file

@ -26,6 +26,10 @@ function (DomController, Settings, Exception, Nc) {
Nc.on(Nc.ns.client.view.playerInfo.update, this.onUpdatePlayerInfo, this),
Nc.on(Nc.ns.client.view.playerInfo.remove, this.onRemovePlayerInfo, this),
Nc.on(Nc.ns.client.game.zoomIn, this.onZoomIn, this),
Nc.on(Nc.ns.client.game.zoomOut, this.onZoomOut, this),
Nc.on(Nc.ns.client.game.zoomReset, this.onZoomReset, this),
Nc.on(Nc.ns.client.view.preloadBar.update, this.onUpdateLoader, this),
];
@ -114,6 +118,18 @@ function (DomController, Settings, Exception, Nc) {
throw new Exception('Abstract Function setCameraZoom not overwritten');
};
AbstractView.prototype.onZoomIn = function () {
throw new Exception('Abstract Function onZoomIn not overwritten');
};
AbstractView.prototype.onZoomOut = function () {
throw new Exception('Abstract Function onZoomOut not overwritten');
};
AbstractView.prototype.onZoomReset = function () {
throw new Exception('Abstract Function onZoomReset not overwritten');
};
AbstractView.prototype.onFullscreenChange = function(isFullScreen) {
if (!isFullScreen) {

View file

@ -21,6 +21,7 @@ function (Parent, DomController, PIXI, Settings, Nc) {
this.loader = null;
this.init();
this.pixi = PIXI;
this.currentZoom = Settings.ZOOM_DEFAULT;
PIXI.scaleModes.DEFAULT = PIXI.scaleModes.NEAREST;
}
@ -121,11 +122,17 @@ function (Parent, DomController, PIXI, Settings, Nc) {
}
PixiView.prototype.calculateCameraPosition = function() {
var zoom = this.container.scale.x;
var targetZoom = this.currentZoom;
var oldZoom = (this.container.scale.x + this.container.scale.y) / 2;
var newZoom = (targetZoom -oldZoom) * Settings.CAMERA_GLIDE / 100;
this.container.scale.x += newZoom;
this.container.scale.y += newZoom;
var target = this.me.getHeadPosition();
target.x *= -Settings.RATIO * zoom;
target.y *= -Settings.RATIO * zoom;
target.x *= -Settings.RATIO * targetZoom;
target.y *= -Settings.RATIO * targetZoom;
target.x -= this.me.playerController.xyInput.x * Settings.STAGE_WIDTH / 4;
target.y += this.me.playerController.xyInput.y * Settings.STAGE_HEIGHT / 4;
@ -154,10 +161,13 @@ function (Parent, DomController, PIXI, Settings, Nc) {
return pos;
};
PixiView.prototype.setCameraZoom = function (z) {
this.container.scale.x = z;
this.container.scale.y = z;
PixiView.prototype.setCameraZoom = function (zoom) {
/*
var oldZoom = this.container.scale.x;
this.container.scale.x += (zoom -oldZoom) * Settings.CAMERA_GLIDE / 100;
this.container.scale.y += (zoom -oldZoom) * Settings.CAMERA_GLIDE / 100;
*/
};
PixiView.prototype.onFullscreenChange = function(isFullScreen) {
@ -165,10 +175,11 @@ function (Parent, DomController, PIXI, Settings, Nc) {
if(isFullScreen) {
this.renderer.resize(window.innerWidth, window.innerHeight);
this.setCameraZoom(window.innerWidth / 600);
this.currentZoom = window.innerWidth / Settings.STAGE_WIDTH;
console.log();
} else {
this.renderer.resize(600, 400);
this.setCameraZoom(1);
this.currentZoom = 1;
}
};
@ -305,6 +316,22 @@ function (Parent, DomController, PIXI, Settings, Nc) {
this.loader.visible = progress < 100;
};
PixiView.prototype.onZoomIn = function() {
if(this.currentZoom + Settings.ZOOM_FACTOR <= Settings.ZOOM_MAX) {
this.currentZoom += Settings.ZOOM_FACTOR;
}
};
PixiView.prototype.onZoomOut = function() {
if(this.currentZoom - Settings.ZOOM_FACTOR > 0) {
this.currentZoom -= Settings.ZOOM_FACTOR;
}
};
PixiView.prototype.onZoomReset = function() {
this.currentZoom = Settings.ZOOM_DEFAULT;
};
PixiView.prototype.destroy = function() {
for (var i = 0; i < this.stage.children.length; i++) {

View file

@ -3,6 +3,9 @@ define(function() {
var Settings = {
STAGE_WIDTH: 600,
STAGE_HEIGHT: 400,
ZOOM_FACTOR: 0.8,
ZOOM_DEFAULT: 1,
ZOOM_MAX: 10,
// BOX2D INITIALATORS
BOX2D_WORLD_AABB_SIZE: 3000,

View file

@ -63,7 +63,10 @@ function (Exception) {
game: {
gameInfo: {
toggle: null
}
},
zoomIn: null,
zoomOut: null,
zoomReset: null
},
to: {
server: {

View file

@ -15,7 +15,7 @@
},
"main": "",
"dependencies": {
"socket.io": ">= 0.9.6",
"socket.io": "= 0.9.6",
"node-static": ">= 0.6.0",
"requirejs": "= 2.0.4",
"node-fork": ">= 0.4.2",