summaryrefslogtreecommitdiff
path: root/jaws/jaws.js
diff options
context:
space:
mode:
Diffstat (limited to 'jaws/jaws.js')
-rw-r--r--[-rwxr-xr-x]jaws/jaws.js208
1 files changed, 2 insertions, 206 deletions
diff --git a/jaws/jaws.js b/jaws/jaws.js
index ac9c43e..9b3ebd4 100755..100644
--- a/jaws/jaws.js
+++ b/jaws/jaws.js
@@ -1,4 +1,4 @@
-/* Built at: Sun Oct 05 2014 16:27:46 GMT+0200 (CEST) */
+/* Built at: Sun Oct 05 2014 16:32:43 GMT+0200 (CEST) */
/**
* @namespace JawsJS core functions.
*
@@ -66,7 +66,7 @@ var jaws = (function(jaws) {
* If a global property is already taken, a warning will be written to jaws log.
*/
jaws.unpack = function() {
- var make_global = ["Sprite", "SpriteList", "Animation", "Viewport", "SpriteSheet", "Parallax", "pressed", "QuadTree"];
+ var make_global = ["Sprite", "SpriteList", "Animation", "SpriteSheet", "Parallax", "pressed", "QuadTree"];
make_global.forEach(function(item) {
if (window[item]) {
@@ -2524,210 +2524,6 @@ return jaws;
})(jaws || {});
-var jaws = (function(jaws) {
-
-/**
- *
- * @class A window (Rect) into a bigger canvas/image. Viewport is always contained within that given image (called the game world). "Field Summary" contains options for the Viewport()-constructor.
- *
- * @property {int} width Width of viewport, defaults to canvas width
- * @property {int} height Height of viewport, defaults to canvas height
- * @property {int} max_x Maximum x-position for viewport, defaults to canvas width
- * @property {int} max_y Maximum y-position for viewport, defaults to canvas height
- * @property {int} x X-position for the upper left corner of the viewport
- * @property {int} y Y-position for the upper left corner of the viewport
- *
- * @example
- * // Center viewport around players position (player needs to have x/y attributes)
- * // Usefull for sidescrollers
- * viewport.centerAround(player)
- *
- * // Common viewport usage. max_x/max_y could be said to set the "game world size"
- * viewport = viewport = new jaws.Viewport({max_x: 400, max_y: 3000})
- * player = new jaws.Sprite({x:100, y:400})
- * viewport.centerAround(player)
- *
- * // Draw player relative to the viewport. If viewport is way off, player won't even show up.
- * viewport.apply( function() {
- * player.draw()
- * });
- *
- */
-
-
-jaws.Viewport = function ViewPort(options) {
- if( !(this instanceof arguments.callee) ) return new arguments.callee( options );
-
- jaws.parseOptions(this, options, this.default_options)
-
- /* This is needed cause default_options is set loadtime, we need to get width etc runtime */
- if(!this.context) this.context = jaws.context;
- if(!this.width) this.width = jaws.width;
- if(!this.height) this.height = jaws.height;
- if(!this.max_x) this.max_x = jaws.width;
- if(!this.max_y) this.max_y = jaws.height;
-
- var that = this
-
- /** Move viewport x pixels horizontally and y pixels vertically */
- this.move = function(x, y) {
- x && (this.x += x)
- y && (this.y += y)
- this.verifyPosition()
- };
-
- /** Move viewport to given x/y */
- this.moveTo = function(x, y) {
- if(!(x==undefined)) { this.x = x }
- if(!(y==undefined)) { this.y = y }
- this.verifyPosition()
- };
-
- /**
- * Returns true if item is outside viewport
- * @example
- *
- * if( viewport.isOutside(player)) player.die();
- *
- * // ... or the more advanced:
- * bullets = new SpriteList()
- * bullets.push( bullet )
- * bullets.removeIf( viewport.isOutside )
- *
- */
- this.isOutside = function(item) {
- return(!that.isInside(item))
- };
-
- /** Returns true if item is inside viewport */
- this.isInside = function(item) {
- return( item.x >= that.x && item.x <= (that.x + that.width) && item.y >= that.y && item.y <= (that.y + that.height) )
- };
-
- /** Returns true if item is partly (down to 1 pixel) inside viewport */
- this.isPartlyInside = function(item) {
- var rect = item.rect()
- return( rect.right >= that.x && rect.x <= (that.x + that.width) && rect.bottom >= that.y && item.y <= (that.y + that.height) )
- };
-
- /** Returns true of item is left of viewport */
- this.isLeftOf = function(item) { return(item.x < that.x) }
-
- /** Returns true of item is right of viewport */
- this.isRightOf = function(item) { return(item.x > (that.x + that.width) ) }
-
- /** Returns true of item is above viewport */
- this.isAbove = function(item) { return(item.y < that.y) }
-
- /** Returns true of item is above viewport */
- this.isBelow = function(item) { return(item.y > (that.y + that.height) ) }
-
-
- /**
- * center the viewport around item. item must respond to x and y for this to work.
- * Usefull for sidescrollers when you wan't to keep the player in the center of the screen no matter how he moves.
- */
- this.centerAround = function(item) {
- this.x = Math.floor(item.x - this.width / 2);
- this.y = Math.floor(item.y - this.height / 2);
- this.verifyPosition();
- };
-
- /**
- * force 'item' inside current viewports visible area
- * using 'buffer' as indicator how close to the 'item' is allowed to go
- *
- * @example
- *
- * viewport.move(10,0) // scroll forward
- * viewport.forceInsideVisibleArea(player, 20) // make sure player doesn't get left behind
- */
- this.forceInsideVisibleArea = function(item, buffer) {
- if(item.x < this.x+buffer) { item.x = this.x+buffer }
- if(item.x > this.x+jaws.width-buffer) { item.x = this.x+jaws.width-buffer }
- if(item.y < this.y+buffer) { item.y = this.y+buffer }
- if(item.y > this.y+jaws.height-buffer) { item.y = this.y+jaws.height-buffer }
- }
-
- /**
- * force 'item' inside the limits of the viewport
- * using 'buffer' as indicator how close to the 'item' is allowed to go
- *
- * @example
- * viewport.forceInside(player, 10)
- */
- this.forceInside = function(item, buffer) {
- if(item.x < buffer) { item.x = buffer }
- if(item.x > this.max_x-buffer) { item.x = this.max_x-buffer }
- if(item.y < buffer) { item.y = buffer }
- if(item.y > this.max_y-buffer) { item.y = this.max_y-buffer }
- }
-
-
- /**
- * executes given draw-callback with a translated canvas which will draw items relative to the viewport
- *
- * @example
- *
- * viewport.apply( function() {
- * player.draw();
- * foo.draw();
- * });
- *
- */
- this.apply = function(func) {
- this.context.save()
- this.context.translate(-this.x, -this.y)
- func()
- this.context.restore()
- };
-
- /**
- * if obj is an array-like object, iterate through it and call draw() on each item if it's partly inside the viewport
- */
- this.draw = function( obj ) {
- this.apply( function() {
- if(obj.forEach) obj.forEach( that.drawIfPartlyInside );
- else if(obj.draw) that.drawIfPartlyInside(obj);
- // else if(jaws.isFunction(obj) {}; // add apply()-functionally here?
- });
- }
-
- /** draws 'item' if it's partly inside the viewport */
- this.drawIfPartlyInside = function(item) {
- if(that.isPartlyInside(item)) item.draw();
- }
-
- /** @private */
- this.verifyPosition = function() {
- var max = this.max_x - this.width
- if(this.x < 0) { this.x = 0 }
- if(this.x > max) { this.x = max }
-
- var max = this.max_y - this.height
- if(this.y < 0) { this.y = 0 }
- if(this.y > max) { this.y = max }
- };
-
- this.moveTo(options.x||0, options.y||0)
-}
-
-jaws.Viewport.prototype.default_options = {
- context: null,
- width: null,
- height: null,
- max_x: null,
- max_y: null,
- x: 0,
- y: 0
-};
-
-jaws.Viewport.prototype.toString = function() { return "[Viewport " + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.width + ", " + this.height + "]" }
-
-return jaws;
-})(jaws || {});
-
-
if(typeof require !== "undefined") { var jaws = require("./core.js"); }
/**