var cajica = 0;
var s;
function inicializarMuchiGame() {
	// Crear un sprite para usarlo repetidas veces
	s = new muchigame.Sprite("cajica", "w");
	s.src['w'] = "img/tile_black.gif";
	s.dim_z = 10;
	s.publicar = pj_publicar;
	s.establecerXYZ(0,0,1);
	muchigame.ManejadorEventos.registrar( s );

	// Dibuja un tablero de 10x10 
	escena = new muchigame.Escena();
	for(var x=0; x< 10; x++)
		for(var y=0; y< 10; y++) {
			var celda = new muchigame.Celda( x+","+y, "", x,y);
			//celda.z = Math.round( 10*Math.random() );
			celda.z = 0;
			//celda.z = Math.round( x+y*4 );
			escena.anadirCelda( celda );
		}

	escena.anadirObjeto( s );
	escena.dibujar("pantalla");
	muchigame.bucle_principal( principal, 100 );
}
			
function nueva_cajica(){
	muchigame.ManejadorEventos.borrar( s );
	s = new muchigame.Sprite("cajica"+(cajica++), "w");
	s.src['w'] = "img/tile_black.gif";
	//establecer dimensiones
	s.dim_z = 10; 
	s.dim_x = 10;
	s.dim_y = 10;
	//funciones de post-procesamiento de publicacion de eventos
	s.publicar = pj_publicar;
	muchigame.ManejadorEventos.registrar( s );
	escena.anadirObjeto( s );
	s.dibujar("pantalla");
}

function principal(){
	s.actualizar();
};

function pj_publicar(ev){
switch (ev.tipo){
 case "keydown": 
	var key = ev.eventoOriginal.keychar;
	var new_x = s.x;
	var new_y = s.y;

	if(key=="ARRIBA")    new_x = s.x-1;
	if(key=="ABAJO")  new_x = s.x+1;
	if(key=="IZQUIERDA")  new_y = s.y-1;
	if(key=="DERECHA") new_y = s.y+1;
	colocar_en_el_mapa(new_x,new_y,s.z);
	break;				
case "mouseleftdown": //boton izquierdo solo...
	c = muchigame.obtener_coordenadasPantalla_a_3D(ev.eventoOriginal.coords[0],ev.eventoOriginal.coords[1]);
	colocar_en_el_mapa(c[0],c[1],s.z);
   break;
}
}
function colocar_en_el_mapa(x,y,z){
	try{
		new_x = x;
		new_y = y;
		new_z = z;
		var obs=escena.queHayEn(new_x,new_y);
		var debajo = obs[0];
		if(obs.length != 1 )
		for( var f=0; f< obs.length; f++){
			if( obs[f].cajica == s.cajica ) continue;
			if(f==obs.length-1){
				var debajo = obs[f];
				break;
			}
			if((obs[f].z+obs[f].dim_z) == obs[f+1].z ){
			//no hay hueco
					continue;
			} else {
				var debajo = obs[f];
				break;
			}
		} else var debajo = obs[0];
		var tope_inferior = debajo.z+debajo.dim_z;
		if (tope_inferior > s.z) new_z = tope_inferior;
		if (tope_inferior < s.z) new_z = s.z-1;			
	} catch (excep){
		salida_depurador(excep);
		return false;
   }
	s.establecerXYZ(new_x,new_y,new_z);
}

function salida_depurador( str ){ //<<<
	document.getElementById("debug").value += str +"\n";
	document.getElementById("debug").scrollTop = document.getElementById("debug").scrollHeight;
} //>>>