/*****************************/
/* Inside The Machine - MKS  */
/*****************************/

//General entity File
//Gère tout les types d'éntités que l'on va pouvoir trouver dans le jeu

#ifndef _ENTITY_H
#define _ENTITY_H
#include <string>
#include "../Engine.h"
//#include "../WorldManager.h"
//#include "Entities.h"

class CWorldManager;
class CEntity
{
   public:
   	//CEntity(std::string n);
   	
   	virtual ~CEntity() {};
   	virtual void Draw(int layer) = 0;
	   virtual void Update() = 0;
	   virtual void Destroy() = 0;
	   virtual void Load() = 0;
	   virtual void CheckInteractions() = 0;
	   void SetManager(CWorldManager * wm)
	   {
	      worldMan = wm;
	   }			  
   	
	public:
	   	//Variables du manager
	   CWorldManager* worldMan;
	   
	   	//Variables générales de l'entité
	   s32 x, y;                    //Position réele de l'entité (monde)
	   int x_screen, y_screen;      //Position de l'entité à l'écran
	   u16 type;                    //Type d'entité
	   u16 genre;                   //Genre de l'entité dans son type
	   int oldx, oldy;              //Ancienne position de l'entité
	   int life;                    //Points de vie de l'entité
	   bool sensH;                  //Définit le sens horizontal de l'entité
	   int w, h;
	   sHitBox hitbox;              //Hitbox de l'entité
	   sHitBoxRect rect;            //Hitbox rectangulaire (collision corps)
	   sHitBoxRect rectBattleLeft, rectBattleRight; //Hitboxes de combat

	   	//Concernant les interactions
	   bool real;       //Définit si l'objet est réel ou non (subit les collisions ou pas)
	   bool stat;       //Définit si l'objet subit la gravité ou non 
		bool actif;
		bool toDelete;   //Il faut supprimer cet objet a la fin des opérations        
};   

#endif
