#pragma once
//-----------------------------------------------------
// Name, first name: Hoet, Guntran
// Group: 1DAE3
//-----------------------------------------------------

//-----------------------------------------------------
// Include Files
//-----------------------------------------------------
#include "GameEngine.h"
//-----------------------------------------------------
// EnemyMaster Class									
//-----------------------------------------------------
class EnemyMaster
{
public:
	EnemyMaster(int x, int y, Bitmap *bmpBitmapPtr);	// Constructor
	virtual ~EnemyMaster();								// Destructor

	//static const int FORCE_GRAVITY = SuperMarioBros::FORCE_GRAVITY;

	//-------------------------------------------------
	// Methods - Member functions							
	//-------------------------------------------------

	virtual void Tick(double deltaTime) = 0;
	virtual void Paint(MATRIX3X2 matView) = 0;
	virtual void DeleteHitRegion() = 0;
	virtual bool IsJumpedOn() = 0;
	virtual bool IsFiredOn() = 0;
	virtual DOUBLE2 GetPos() = 0;
	virtual void DrawDebug(MATRIX3X2 matView) = 0;
	virtual RECT2 GetAABBRect() = 0;
	virtual void Move(DOUBLE2 moveValue) = 0;
	virtual void LevelCollision() = 0;
	virtual void SetVelocityToZero(bool velocityX, bool velocityY) = 0;
	// 0 = goomba
	// 1 = troopa
	virtual int GetEnemyID() = 0;
	virtual bool Destory() = 0;
	virtual void SetDirection(bool dir) = 0;

	static const int ANIMATION_INTERVAL = 8;

	static const int ID_GOOMBA = 0;
	static const int ID_TROOPA = 1;

	static const int SPEED = 2000;
	static const int MAX_SPEED = 300;
	static const int FORCE_GRAVITY = 800;
	static const int AGRO_RANGE = 190;
	static const int DESTROY_ALTITUDE = 500;

private:
	// nothing to special...

	// -------------------------
	// Disabling default copy constructor and default 
	// assignment operator.
	// -------------------------
	EnemyMaster(const EnemyMaster& yRef);									
	EnemyMaster& operator=(const EnemyMaster& yRef);	
};


