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

	NOM DU FICHIER :CObjet.cpp

	DESCRIPTION :	Implémentation des classes virtuelles relatives aux objets

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

	DATE DE CRÉATION : 2004-3-16

	MISES À JOUR :

===============================================================================*/
#include "CObjet.h"
#include "CTrou.h"
#include "CTrappe.h"
#include "CTroudeau.h"
#include "CDepart.h"
#include "CBande.h"


/*------------------------------------------------------------------
  Fonction :	CObjet::CObjet

  Description :	Constructeur de l'objet

  Paramètres :
	 CVector3f pos : 
	 type_jeuobjet Type : Type d'objet

  Valeur retournée :	Aucune (constructeur) : 

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
CObjet::CObjet(CVector3f pos, type_jeuobjet Type)
{
    Pos.setX(pos.GetPosX());
    Pos.setY(pos.GetPosY());
    Pos.setZ(pos.GetPosZ());
	this->Type = Type;
}

/*------------------------------------------------------------------
  Fonction :	CObjet::~CObjet

  Description :	Destructeur

  Paramètres :

  Valeur retournée :	 : 

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


/*------------------------------------------------------------------
  Fonction :	CObjet::CreerObjet

  Description :	Crée un objet

  Paramètres :
	 type_jeuobjet Typo : Type d'objet à créer
	 const CVector3f& LaPos : Position de l'objet

  Valeur retournée :	CObjet* : 

  Par : 2004-3-16 Martin Bisson, Anne-Marie Buki, Mylene Denis & Jean-Francois Pérusse
  MAJ: 
------------------------------------------------------------------*/
CObjet* CObjet::CreerObjet(type_jeuobjet Typo, const CVector3f& LaPos)
{
    switch(Typo)
    {
    case (JEUOBJET_NONE):
    case (JEUOBJET_END):
    default:
      return 0;
      break;
    case (JEUOBJET_TROU):
      return new CTrou(LaPos, Typo);
      break;
    case (JEUOBJET_DEPART_UP):
    case (JEUOBJET_DEPART_RIGHT):
    case (JEUOBJET_DEPART_DOWN):
    case (JEUOBJET_DEPART_LEFT):
      return new CDepart(LaPos, Typo);
      break;
    case (JEUOBJET_TRAPPE):
	return new CTrappe(LaPos, Typo);
	break;
    case (JEUOBJET_TROUDEAU):
	return new CTroudeau(LaPos, Typo);
    case (JEUOBJET_BANDE_N):
    case (JEUOBJET_BANDE_NE):
    case (JEUOBJET_BANDE_E):
    case (JEUOBJET_BANDE_SE):
      return new CBande(LaPos, Typo);
      break;
    }
  
  return 0;
}

