
// globale variablen
var context = null;
var timeSinceLastFrame = 0;
var lastFrameTime = 0;
var fps = 0;
var scene = null;

var imgFireball = null;
var spFireball = null;
var saFireball = null;


// KeyEvents abfangen
document.onkeydown = KeyListener.keyDown;
document.onkeyup = KeyListener.keyUp;
document.onkeypress = KeyListener.keyPress;

function init(){
	context = $('example').getContext('2d');
	context.fillStyle = "rgb(0,0,0)";
	
	//spieler anlegen
	var chPlayer1 = createCharFiren();
	chPlayer1.setPosition(new Vector3(200,0, -100));
	KeyListener.addListener(chPlayer1);
	
	var chPlayer2 = createCharFreeze();
	chPlayer2.setPosition(new Vector3(600,0, -100));
	chPlayer2.dirx = -1;
	chPlayer2.keyLeft=192;
	chPlayer2.keyRight=191;
	chPlayer2.keyUp=59;
	chPlayer2.keyDown=222;
	chPlayer2.keyAttack=76;
	chPlayer2.keyJump=75;
	chPlayer2.keyDefend=74;
	KeyListener.addListener(chPlayer2);
	
	// scene aufbauen
	scene = createWoodScene();
	scene.addCharacter(chPlayer1);
	scene.addCharacter(chPlayer2);
	
	imgFireball = new Image();
	imgFireball.onload = function(){
		logDebug("load imgFireball");
		
		spFireball = createEquallySizedSprite(imgFireball, 4, 3);
		
		saFireball = new SpriteAnimation(spFireball);
		saFireball.addKeyFrame(0, 0);
		saFireball.addKeyFrame(0.20, 1);
		saFireball.addKeyFrame(0.40, 2);
		saFireball.addKeyFrame(0.60, 3);
		saFireball.addKeyFrame(0.80, 4);
		saFireball.addKeyFrame(1.0, 5);
	}
	imgFireball.src = "/blog_resources/littleFighterJavascript/resources/images/firen_ball.png";
	
	// sonstiges
	logInfo(scene.rootSceneNode.getTreeAsString());
	lastFrameTime = new Date().getTime();
	timeSinceLastFrame = 0;
	
	
}

/**
 * wird jedes Frame aufgerufen
 *
 */
function mainLoop(){

	var frameTime = new Date().getTime();
	timeSinceLastFrame = (frameTime - lastFrameTime) /1000;
	scene.update(timeSinceLastFrame);
	scene.draw();
	lastFrameTime = frameTime;
	
	// gewichtete fps.
	fps = 0.95*fps + 0.05*(1/timeSinceLastFrame);
	var msg = "fps: " + fps.toFixed(2);
	
	setMessage(msg);
}

/**
 * @param fps
 *		maximale framerate der main loop 
 *
 */
function startLoop(fps) {
	init();
    this.loopHandle = setInterval (function(){mainLoop();}, 1000/fps);
}
