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

	NOM DU FICHIER :CDepart.cpp

	DESCRIPTION :	Implémentation des fonctions relatives à l'objet dérivé Départ

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

	DATE DE CRÉATION : 2004-3-16

	MISES À JOUR :

===============================================================================*/

#include "CDepart.h"
#include <GL/glut.h>

CPngTexture CDepart::TextureDepart;


/*------------------------------------------------------------------

  Fonction :	CDepart::CDepart

  Description :	Constructeur

  Paramètres :

	 const CVector3f& posi : Position du départ

	 type_jeuobjet Type : Type de départ (orientation)

	 float w : Largeur du départ

	 float h : Hauteur du départ

	 Type : 

  Valeur retournée :	Aucune (constructeur) : 

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

  MAJ: 

------------------------------------------------------------------*/

CDepart::CDepart(const CVector3f& posi, type_jeuobjet Type, float w, float h)
  : CObjet(posi, Type)
{
  if ( (Type == JEUOBJET_DEPART_LEFT) || 
       (Type == JEUOBJET_DEPART_RIGHT) )
    {
      width = h;
      height = w;
    }
  else
    {
      width = w;
      height = h;
    }

}



/*------------------------------------------------------------------

  Fonction :	CDepart::AfficheGL

  Description :	Affiche le départ 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 CDepart::AfficheGL() const
{  
  glEnable(GL_TEXTURE_2D);
  glBindTexture(GL_TEXTURE_2D, TextureDepart.GetID());

  float Left, Right, Bottom, Top;
  Left = Pos.GetPosX() - width/TAILLE_TUILE / 2;
  Right = Pos.GetPosX() + width/TAILLE_TUILE / 2;
  Bottom = Pos.GetPosY() - height/TAILLE_TUILE / 2;
  Top = Pos.GetPosY() + height/TAILLE_TUILE / 2;

  switch(Type)
    {
    case (JEUOBJET_DEPART_UP):
      glBegin(GL_QUADS);
      {
	  glNormal3f(0,0,1);
	  glTexCoord2i(0, 1); glVertex2f(Left,  Bottom);
	  glTexCoord2i(1, 1); glVertex2f(Right, Bottom);
	  glTexCoord2i(1, 0); glVertex2f(Right, Top);
	  glTexCoord2i(0, 0); glVertex2f(Left, Top);
      }
      glEnd();
      break;
    case (JEUOBJET_DEPART_RIGHT):
      glBegin(GL_QUADS);
	  glNormal3f(0,0,1);
	  glTexCoord2i(1, 1); glVertex2f(Left,  Bottom);
	  glTexCoord2i(1, 0); glVertex2f(Right, Bottom);
	  glTexCoord2i(0, 0); glVertex2f(Right, Top);
	  glTexCoord2i(0, 1); glVertex2f(Left, Top);
      glEnd();
      break;
    case (JEUOBJET_DEPART_DOWN):
      glBegin(GL_QUADS);
	  glNormal3f(0,0,1);
	  glTexCoord2i(1, 0); glVertex2f(Left,  Bottom);
	  glTexCoord2i(0, 0); glVertex2f(Right, Bottom);
	  glTexCoord2i(0, 1); glVertex2f(Right, Top);
	  glTexCoord2i(1, 1); glVertex2f(Left, Top);
      glEnd();
      break;
    case (JEUOBJET_DEPART_LEFT):
      glBegin(GL_QUADS);
	  glNormal3f(0,0,1);
	  glTexCoord2i(0, 0); glVertex2f(Left,  Bottom);
	  glTexCoord2i(0, 1); glVertex2f(Right, Bottom);
	  glTexCoord2i(1, 1); glVertex2f(Right, Top);
	  glTexCoord2i(1, 0); glVertex2f(Left, Top);
      glEnd();
      break;
    default:
      break;
    }

  glDisable(GL_TEXTURE_2D);
}



/*------------------------------------------------------------------

  Fonction :	CDepart::isCollision

  Description :	Détermine si la balle fait collision avec le départ

  Paramètres :

	 CBalle *balle : 

  Valeur retournée :	bool : Toujours faux

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

  MAJ: 

------------------------------------------------------------------*/

bool CDepart::isCollision(CBalle *balle) const
{
  return false;
}


/*------------------------------------------------------------------

  Fonction :	CDepart::ChargeTextures

  Description :	Charge la texture du départ

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

/*------------------------------------------------------------------

  Fonction :	CDepart::DechargeTextures

  Description :	Décharge la texture du départ

  Paramètres :

  Valeur retournée :	bool : Vrai

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse

  MAJ: 

------------------------------------------------------------------*/

bool CDepart::DechargeTextures()
{
  TextureDepart.Unload();
  return true;
}
