/*
	Copyright 2008 Hans Schmucker
	
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
	var Entity=function(CanvasCollision_set,Image_sprite,Canvas2dContext_target){
		this.collision=CanvasCollision_set;
		this.target=Canvas2dContext_target;
		this.sprite=Image_sprite;
		var x,y;
		var minx=this.collision.tsprite_cx;
		var miny=this.collision.tsprite_cy;
		var w=this.collision.map[0].width-this.collision.tsprite_w;
		var h=this.collision.map[0].height-this.collision.tsprite_h;
		do{
			x=Math.floor(minx+Math.random()*w);
			y=Math.floor(miny+Math.random()*h);
		}while(this.collision.collide(x,y));
		this.x=x;
		this.y=y;
		do{
			this.vx=Math.floor(Math.random()*16)-8;
		}while(!this.vx);
		do{
			this.vy=Math.floor(Math.random()*16)-8;
		}while(!this.vy);
	};

	Entity.prototype={
		collision:null,
		x:32,
		y:32,
		vx:3,
		vy:3,
		tx:0,
		ty:0,
		//FIXME ROTATION a:0,
		sprite:null,
		target:null,
		draw:function(){
			this.target.setTransform(1,0,0,1,0,0);
			this.target.globalCompositeOperation="source-over";
			if(this.collision.a%360){
				this.target.translate(this.x,this.y);
				this.target.rotate(this.collision.a*Math.PI/180);
				this.target.scale(this.collision.s,this.collision.s);
				this.target.translate(-Math.floor(this.collision.sprite.width/2),-Math.floor(this.collision.sprite.height/2));
				this.target.drawImage(this.sprite,0,0);
			}else
				this.target.drawImage(this.sprite,this.x-this.collision.tsprite_cx,this.y-this.collision.tsprite_cy,this.sprite.width*this.collision.s,this.sprite.height*this.collision.s);
				
			this.target.setTransform(1,0,0,1,0,0);
		},
		move:function(){
			this.tx=this.x+this.vx;
			this.ty=this.y+this.vy;
			//FIXME ROTATION this.collision.setScaleAngle(null,this.a);
			if(!this.collision.collide(this.tx,this.ty)){
				this.x=this.tx;
				this.y=this.ty;
			}else{
				do{
					this.vx=Math.floor(Math.random()*7)-3;
				}while(!this.vx);
				do{
					this.vy=Math.floor(Math.random()*7)-3;
				}while(!this.vy);
				//FIXME ROTATION this.a = Math.atan(this.vy, this.vx)/Math.PI*180;
			}
		}
	};