/**
*Programme cree par The Clusters
*Classe ThreadCarteRamassage du jeu "Chkoba"
*Met a jour les CarteRamassage
*Classe non finalise
*@author The Clusters
*@version 1.0
**/

package chkoba;
import chkoba.*;
import java.util.ArrayList;

/**
*	Classe Thread pour les Cartes Ramassage
*/

public class ThreadCarteRamassage extends Thread 
{

	IPlateau plateau;
	
	public ThreadCarteRamassage (IPlateau p)
	{
		plateau = p;
	}

	public void run()
	{
		try
		{
			
			//recup de la taille du tapis avant toute action
			int tailleTapisAvantJouer = plateau.getTapis().size();
			System.out.println("taille tapis av "+tailleTapisAvantJouer);
			//recup des cartes avant toute action sur le tapis
			ArrayList<ICarte> tapisAvantJouer=new ArrayList<ICarte>();
			for ( int i = 0 ; i!= tailleTapisAvantJouer ; i++)
			{
				tapisAvantJouer.add(plateau.getTapis().get(i));
			}
			// recup des carte du Joueur courant avant qu'il joue
			ArrayList<ICarte> CarteJoueurCourantAvantJouer=new ArrayList<ICarte>();
			for ( int i = 0 ; i!= plateau.getJoueurCourant().getMain().size() ; i++)
			{
				CarteJoueurCourantAvantJouer.add(plateau.getJoueurCourant().getMain().get(i));
			}
			//cette taille va etre la base de notre traitement, si la taille du tapis change, alors le joueurCourant a joue donc debut du traitement d'affichage		
			int tailleTapisApJouer = plateau.getTapis().size();
			while(tailleTapisAvantJouer == tailleTapisApJouer)
			{
				sleep(100);
				tailleTapisApJouer = plateau.getTapis().size();
				System.out.println("taille tapis ap "+tailleTapisApJouer);
			}
			//On recupere le tapis apres avoir joue, par comparaison on saura quel sont les cartes recupere ( les carte qui ne sont plus la )
			ArrayList<ICarte> tapisApresJouer=new ArrayList<ICarte>();
			for ( int i = 0 ; i!= tailleTapisApJouer ; i++)
			{
				tapisApresJouer.add(plateau.getTapis().get(i));
			}
			// recup des cartes du Joueur courant apres qu'il joue par comparaison on saura quel est la carte jouee ( la carte qui n'est plus la )
			ArrayList<ICarte> CarteJoueurCourantApresJouer=new ArrayList<ICarte>();
			for ( int i = 0 ; i!= plateau.getJoueurCourant().getMain().size() ; i++)
			{
				CarteJoueurCourantApresJouer.add(plateau.getJoueurCourant().getMain().get(i));
			}
			ArrayList<ICarte> lesCartesJouees = new ArrayList<ICarte>();
			for(int i = 0 ; i != tailleTapisAvantJouer ; i++)
			{
				int comp=0;
				for ( int j = 0 ; j != tailleTapisApJouer ; j ++)
				{
					if(tapisApresJouer.get(j).compareTo(tapisAvantJouer.get(i))!=0)
						comp++;
				}
				//Si elle n'etais pas dans le tapis 
				if (comp == tailleTapisApJouer)
					lesCartesJouees.add(tapisAvantJouer.get(i));
			}
			ICarte carteJouee = null;
			for(int i = 0 ; i != CarteJoueurCourantAvantJouer.size() ; i++)
			{
				int comp=0;
				for ( int j = 0 ; j != CarteJoueurCourantApresJouer.size() ; j ++)
				{
					if(CarteJoueurCourantApresJouer.get(j).compareTo(CarteJoueurCourantAvantJouer.get(i))!=0)
					{
						carteJouee = CarteJoueurCourantAvantJouer.get(i);
						break;
					}
				}
			}
			System.out.println(carteJouee.affiche());
			String req;
			if ( tailleTapisApJouer == 0)
				req = "Chkoba !!!";
			else 
				req = "Pris";
			new CarteRamassage(carteJouee,lesCartesJouees,req).setVisible(true);
		}
		catch(Exception e )
		{
		}
	}

}