import java.util.*;
import java.awt.*;

public class GenAleaDonjon{
	String strType=new String() ;
	Entite objet=new Entite();
	
	
	public GenAleaDonjon(
		Monde monde,
		Catalog cat,
		Point oldInsertPt,
		int tailleGrille,
		boolean vertical,
		boolean sens,
		ArrayList[][] grille,
		Personnage perso
		){
		
		for(int rx=10;rx<tailleGrille-10;rx++){
			for(int ry=10;ry<tailleGrille-10;ry++){
				
        		if(!grille[rx][ry].isEmpty()){
					
	        		for(int i=0;i<grille[rx][ry].size();i++){
						
			 			try{
			 					
			 				objet = (Entite) grille[rx][ry].get(i);
		 					
		 					//String strType ;			
							strType = (objet.getClass().getName());
							
							if(strType.compareTo("Vide")==0){
								grille[rx][ry].remove(objet);
							}
							
						}
						catch(NoSuchElementException exc){};
					}
				}
			
			}
		}
		
		/////////////////////////////////////////
		
		new Remplisseur(grille,"standardwall","mur","wall","Wall",10,10,tailleGrille-21,tailleGrille-21,"./images/walls/randomizer/"+new Integer((int)(Math.abs(Math.random()*3))+1).toString()+".gif",2,true);
			
		///////////////////////////////////////////
		
		
		//if(vertical && perso.indexTerrainZ>0){
		if(vertical){	
			new RoomAlea(cat,0,0,0,monde,"standardwall",perso.getCooX()-3,perso.getCooY()-3,(int)(Math.abs(Math.random()*8))+4,(int)(Math.abs(Math.random()*8))+4);
		}
		//else if(perso.indexTerrainZ>0){
		else{
			Point insertPt=new Point(perso.getCooX(),perso.getCooY());
			int orient=0;
			
			if(perso.getCooY()==tailleGrille-11 && oldInsertPt.getY()==10){orient=1;insertPt=new Point(perso.getCooX(),perso.getCooY()+1);}
			if(perso.getCooX()==10 && oldInsertPt.getX()==tailleGrille-11){orient=2;insertPt=new Point(perso.getCooX()-1,perso.getCooY());}
			if(perso.getCooY()==10 && oldInsertPt.getY()==tailleGrille-11){orient=3;insertPt=new Point(perso.getCooX(),perso.getCooY()-1);}
			if(perso.getCooX()==tailleGrille-11 && oldInsertPt.getX()==10){orient=4;insertPt=new Point(perso.getCooX()+1,perso.getCooY());}
			
			int indexTileMur=(int)((Math.abs(Math.random()*3))+1);
			
			new Couloir(cat,monde,"./images/walls/randomizer/type"+new Integer(indexTileMur).toString()+"base.gif",indexTileMur,"./images/surfaces/f"+new Integer((int)(Math.abs(Math.random()*6))+1).toString()+".gif",insertPt,orient,(int)(Math.abs(Math.random()*8)+3));
		}
		
		///////////////////////////////////////////////
		
		
		//Placer l'escalier correspondant à l'insertion si voyage vertical
		if(vertical){
			
			//On enleve les pieges au point d'insertion du perso
			new Foreuse(grille,"Piege",perso.getCooX(),perso.getCooY(),0,0);
			
			if(sens){//up donc down
				grille[perso.getCooX()][perso.getCooY()].add(new Escalier(false,"standardstairDOWN","Un escalier vers le bas","Down Stair","Escalier",true,"./images/escaliers/escalierdown.gif"));
			
			}
			
			if(!sens){//down donc up
				grille[perso.getCooX()][perso.getCooY()].add(new Escalier(false,"standardstairUP","Un escalier vers le haut","Up Stair","Escalier",true,"./images/escaliers/escalierup.gif"));
			
			
			
				//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
				////////////TEST//////////////
				//grille[perso.getCooX()+1][perso.getCooY()+1].add(new Escalier(false,"standardstairDOWN","Un escalier vers le bas","Escalier",true,"./images/escaliers/escalierdown.gif"));
			
			}
				
		}
		
		
		
	}
	
	
}