package modele;
/**
 * Cette classe groupeProprietes permet de créer des groupes en fonction de la couleur des cases
 * @author Emilie Collasse, Cynthia Fong, Salma Zaghloul
 * @version 1.0
 */
import java.util.*;
public class groupeProprietes{
	protected String nom;
	protected Vector <possessionPossible> groupe;
	public groupeProprietes(String nom){
		this.nom=nom;
		groupe = new Vector<possessionPossible>(4);
	}
	/**
	 * création d'un groupe à deux éléments
	 * @param c1
	 * @param c2
	 */
	public void ajouter (Case c1,Case c2){
		groupe.addElement((possessionPossible)c1);
		groupe.addElement((possessionPossible)c2);
	}
	/**
	 * création d'un groupe à 3 éléments
	 * @param c1
	 * @param c2
	 * @param c3
	 */
	public void ajouter (Case c1, Case c2, Case c3){
		groupe.addElement((possessionPossible)c1);
		groupe.addElement((possessionPossible)c2);
		groupe.addElement((possessionPossible)c3);
	}
	/**
	 * création d'un groupe à 4 éléments
	 * @param c1
	 * @param c2
	 * @param c3
	 * @param c4
	 */
	public void ajouter(Case c1, Case c2, Case c3, Case c4){
		groupe.addElement((possessionPossible)c1);
		groupe.addElement((possessionPossible)c2);
		groupe.addElement((possessionPossible)c3);
		groupe.addElement((possessionPossible)c4);
	}
	/**
	 * vérifie si le joueur donné en paramètre possède le groupe entier
	 * @param proprietaire
	 */
	public boolean possedeGroupeEntier(joueur proprietaire){
		boolean possedeTout=true;
		for (int i=0; i<groupe.size();i++){
			if (proprietaire!=((groupe.get(i)).getProprietaire()))
				possedeTout=false;
		}
		return possedeTout;
	}
	/**
	 * 
	 * @return renvoit le groupe dans un vector
	 */
	public Vector<possessionPossible> getGroupe(){
		return groupe;
	}
	/**
	 * 
	 * @return un booléen disant si le groupe possède au moins une construction
	 */
	public boolean possedeConstruction(){
		boolean possConst=false;
		for (int i=0;i<groupe.size();i++){
			if ((groupe.get(i).getClass()+"").equals("class modele.propriete"))
				if (((propriete)groupe.get(i)).getNbDeConstruction()!=0)
					possConst=true;
		}
		return possConst;
	}
	/**
	 * 
	 * @param proprietaire
	 * @return le nombre de propriétés du groupe possédées par le joueur passé en paramètre
	 */
	public int nombreDeProprietesPossedees(joueur proprietaire){
		int reponse=0;
		for (int i=0; i<groupe.size();i++){
			if ((groupe.get(i)).getProprietaire()==(proprietaire))
				reponse+=1;
		}
		return reponse;
	}
	/**
	 * 
	 * @return la couleur du groupe ( pour les compagnies et les gares, ça renvoit les mots 'compagnie' et 'gare'
	 */
	public String getColorGroupe(){
		if ((""+groupe.get(0).getClass()).equals("class modele.propriete"))
			return ((propriete)groupe.get(0)).getColor();
		else 
			return "neutre";
	}
}