/*====================ÉCOLE POLYTECHNIQUE DE MONTRÉAL============================

	NOM DU FICHIER :CTroudeau.cpp

	DESCRIPTION :	Implémentation des fonctions de la classe trou d'eau

	AUTEUR : Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

	DATE DE CRÉATION : 2004-3-16

	MISES À JOUR :

===============================================================================*/
#include "CTroudeau.h"
#include <GL/glut.h>

CAnimation CTroudeau::AnimeTroudeau;
/*------------------------------------------------------------------
  Fonction :	CTroudeau::AfficheGL

  Description :	Dessiner le trou d'eau en OpenGL

  Paramètres :

  Valeur retournée :	void : 

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
void CTroudeau::AfficheGL() const
{
    float r = rayon / TAILLE_TUILE;
    AnimeTroudeau.DrawAt(Pos.GetPosX()-r, Pos.GetPosY()-r);
    AnimeTroudeau.Play();
    
}


/*------------------------------------------------------------------
  Fonction :	CTroudeau::isCollision

  Description :	Vérifie si la balle fait une collision avec le trou d'eau

  Paramètres :
	 CBalle *balle : 

  Valeur retournée :	bool : Si la collision s'est fait ou pas

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CTroudeau::isCollision(CBalle *balle) const
{
  bool retour;
  CVector3f levect;
  levect = balle->getPos() - Pos;

  retour = (levect * levect <= rayon * rayon /(TAILLE_TUILE*TAILLE_TUILE));

  if (retour)
    balle->setDirection(coef * balle->getDirection());

  return retour;
}


/*------------------------------------------------------------------
  Fonction :	CTroudeau::ChargeTextures

  Description :	Charge la texture pour les trous d'eau

  Paramètres :

  Valeur retournée :	bool : Si le chargement s'est fait

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CTroudeau::ChargeTextures()
{

  	//Position (0,0) et taille (1,1)
	AnimeTroudeau.Setup(0, 0, 2*0.7, 2*0.7);
	//Images de l'animation, 100ms pour chaque image
	AnimeTroudeau.AddFile("editeur/images/eau1.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau2.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau3.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau4.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau5.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau6.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau7.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau8.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau9.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau10.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau11.PNG",0,-2,100);
	AnimeTroudeau.AddFile("editeur/images/eau12.PNG",0,-2,100);

	return true;
}


/*------------------------------------------------------------------
  Fonction :	CTroudeau::DechargeTextures

  Description :	Décharge la texture

  Paramètres :

  Valeur retournée :	bool : Vrai

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CTroudeau::DechargeTextures()
{
    AnimeTroudeau.Clear();
    return true;
}

/*------------------------------------------------------------------
  Fonction :	UpdateAnimations()
  
  Description :	Met a jour l'animation de l'eau dans le jeu
  
  Par : 2004-4-9 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
void CTroudeau::UpdateAnimations() const
{
    AnimeTroudeau.Update();
}
