/**
* @author Inateno / http://inateno.com / http://dreamirl.com
*/
/**
* @constructor TileRenderer
* @augments Renderer
* @class draw a tile (it's a part of an image)<br>
* checkout Renderer for standard parameters
* @example var haldShip = new DE.GameObject( {
* x: 500, y: 500,
* renderer: new DE.TileRenderer( {
* "imageName": "ship",
* "tilesizes": { "width": "100", "height": 200 },
* "tileposition": { "x": "100", "y": 0 }
* } )
* } );
*/
define( [ 'DE.Renderer', 'DE.ImageManager', 'DE.Vector2', 'DE.Sizes', 'DE.TileRenderer.render', 'DE.CONFIG' ],
function( Renderer, ImageManager, Vector2, Sizes, TileRender, CONFIG )
{
function TileRenderer( params )
{
if ( !params )
throw new Error( "TileRenderer :: You have to pass arguments object to instantiate -- see the doc" );
Renderer.call( this, params );
this.imageName = params.imageName || undefined;
if ( !this.imageName )
throw new Error( "TileRenderer :: No imageName defined -- declaration canceled" );
if ( !ImageManager.images[ this.imageName ] )
throw new Error( "TileRenderer :: Can't find image " + this.imageName + " in imagesDatas" );
params.tilesizes = params.tilesizes || params.tileSizes || {};
this.tilesizes = new Sizes( params.tilesizes.width || params.tilesizes.w || params.width || 10
, params.tilesizes.height || params.tilesizes.h || params.height || 10
, 1, 1 );
params.tileposition = params.tileposition || params.tilePosition || {};
this.tileposition = new Vector2( params.tileposition.x || params.x || 0
, params.tileposition.y || params.y || 0 );
if (!this.tileposition)
{
console.error("Tile position must be defined");
}
params.scaleX = params.scale || params.scaleX || params.scalex || 1;
params.scaleY = params.scale || params.scaleY || params.scaley || 1;
params.sizes = params.sizes || {};
this.sizes = new Sizes( params.sizes.width || params.width || params.w || params.tilesizes.width || 10
, params.sizes.height || params.height || params.h || params.tilesizes.height || 10
, params.scaleX, params.scaleY );
this.localPosition.x -= ( this.sizes.width * this.sizes.scaleX * 0.5 );
this.localPosition.y -= ( this.sizes.height * this.sizes.scaleY * 0.5 );
}
TileRenderer.prototype = new Renderer();
TileRenderer.prototype.constructor = TileRenderer;
TileRenderer.prototype.supr = Renderer.prototype;
TileRenderer.prototype.DEName = "TileRenderer";
TileRenderer.prototype.render = TileRender;
CONFIG.debug.log( "TileRenderer loaded", 3 );
return TileRenderer;
} );