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

	NOM DU FICHIER :CTrappe.cpp

	DESCRIPTION :	Implémentation des fonctions de la classe Trappe

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

	DATE DE CRÉATION : 2004-3-16

	MISES À JOUR :

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

CPngTexture CTrappe::TextureTrappe;


/*------------------------------------------------------------------
  Fonction :	CTrappe::AfficheGL

  Description :	Affiche la trappe 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 CTrappe::AfficheGL() const
{
  glEnable(GL_TEXTURE_2D);
  glColor3f(1,1,1);
  glBindTexture(GL_TEXTURE_2D, TextureTrappe.GetID());

  float r = rayon / TAILLE_TUILE;

  glBegin(GL_QUADS);
  glNormal3f(0,0,1);
    glTexCoord2i(0, 1);
    glVertex2f(Pos.GetPosX() - r, Pos.GetPosY() - r);
    glTexCoord2i(1, 1);
    glVertex2f(Pos.GetPosX() + r, Pos.GetPosY() - r);
    glTexCoord2i(1, 0);
    glVertex2f(Pos.GetPosX() + r, Pos.GetPosY() + r);
    glTexCoord2i(0, 0);
    glVertex2f(Pos.GetPosX() - r, Pos.GetPosY() + r);
  glEnd();

  glDisable(GL_TEXTURE_2D);
}


/*------------------------------------------------------------------
  Fonction :	CTrappe::isCollision

  Description :	Vérifie si la balle fait va intersecter la trappe

  Paramètres :
	 CBalle *balle : 

  Valeur retournée :	bool : Si la collision se fait

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
bool CTrappe::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 :	CTrappe::ChargeTextures

  Description :	Charge la texture de la trappe

  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 CTrappe::ChargeTextures()
{
  return (TextureTrappe.LoadPNG("editeur/images/Trappe.png") != 0);
}

/*------------------------------------------------------------------
  Fonction :	CTrappe::DechargeTextures

  Description :	Décharge la texture de la trappe

  Paramètres :

  Valeur retournée :	bool : Vrai

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