package com.tn.entity;

import java.util.ArrayList;
import java.util.Random;

import android.content.Context;

import com.tn.parser.XMLDOMParser;

public class Partie {

	//On fixe le nombre de drapeaux
	private static int NOMBRE_DRAPEAU = 236;
	
	
	//On fixe le nombre de tentatives par Partie
	private static int NOMBRE_TENTATIVE = 10;
	
	private int niveauPartie; // niveau de la partie
	private ArrayList<Monument> listMonument; // liste des monuments lors de la partie
	private int scorePartie; // score de la partie
	private XMLDOMParser parser; //parseur xml
	//private Context context; // contex de l'appication
	
	//Constructeur
	public Partie(Context context, int niveau) {
		//this.context = context;
		this.niveauPartie = niveau;
		listMonument = new ArrayList<Monument>();
		parser = new XMLDOMParser(context);
		scorePartie = 0;
	}   
	
	/*//retourne un entier au hasard entre une valeur min et max
	public int auHasardEntre (int max , int min ){        
		int resultat = (int) ((max-min) * Math.random() + min) ;
	    return resultat;
	}*/
	
	//test si un monument est deja utilisé dans la partie
	private boolean contain(int idMonument){
		for (int i = 0 ; i < listMonument.size() ; i++)
			if(listMonument.get(i).getIdMoument() == idMonument)
				return true;
		   
		   return false;
	   }
   
	//choisir un monument a trouver
	public Monument choisirMonument(){
		int nbrMonument = parser.getNombreMonument(); //on prend d'abord le nombre de monuments
		
		int idMonument;
	
		//on boucle jusqu'a ce qu'on obtient un id different des autres
		do{
			Random rand = new Random();
			idMonument = rand.nextInt(nbrMonument); //auHasardEntre(nbrMonument , 0);
		}while(contain(idMonument));
		
		Monument monument = parser.getMonument(idMonument);
		
		listMonument.add(monument);
		
		return monument;
	}
	
	 //choisir aléatoirement 3 drapeaux a afficher avec celui du monument choisit precedemment 
	 //retourner leurs ids sous formes d'un tableau d'entiers
	
	public ArrayList<Integer> selectDrapeau(){
		// on creer un tableau d'entier
		ArrayList<Integer> listDrapeau = new ArrayList<Integer>();
		
		/*
		
		// on ajoute d'abord le drapeau du monument concerné (se trouvant a la derniere position de la liste des monuments)
		listDrapeau.add(listMonument.get(listMonument.size() - 1).getIdPays());
		
		*/
		
		Integer id ;
		
		for (int i = 0 ; i < 3 ; i++){
			do {
				
				//id = auHasardEntre(NOMBRE_DRAPEAU, 0);
				Random rand = new Random();
				id = rand.nextInt(NOMBRE_DRAPEAU+1);
			} while (listDrapeau.contains(id) && id!= listMonument.get(listMonument.size() - 1).getIdPays());
			
			listDrapeau.add(id);
		}
		
		return listDrapeau;
	}
	
	//on appelle cette fonction quand l'utilisateur reconnait l'image a trouver
	public void ajouterScore(){
		scorePartie++;
	}
	
	//Cette fonction sert a afficher le score
	public String affichierScore(){
		return scorePartie + "/" + NOMBRE_TENTATIVE ;
	}

	public static int getNOMBRE_TENTATIVE() {
		return NOMBRE_TENTATIVE;
	}

	public static void setNOMBRE_TENTATIVE(int nOMBRE_TENTATIVE) {
		NOMBRE_TENTATIVE = nOMBRE_TENTATIVE;
	}
	
	
}
