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

//-----------------------------------------------------
// Include Files
//-----------------------------------------------------
#include "GameEngine.h"
#include "Mario.h"

//-----------------------------------------------------
// EntityMaster Class									
//-----------------------------------------------------
class EntityMaster
{
public:
	EntityMaster(int x, int y, Bitmap* bmpBitmapPtr);		// Constructor
	virtual ~EntityMaster();								// Destructor

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

	virtual void Tick(double deltaTime) = 0;
	virtual void Paint(MATRIX3X2 matView) = 0;
	virtual bool IsHit() = 0;
	virtual DOUBLE2 GetPos() = 0;
	virtual void DrawDebug(MATRIX3X2 matView) = 0;
	virtual RECT2 GetAABBRect() = 0;
	virtual int ReturnReward() = 0;
	virtual void Delete() = 0;
	virtual void Move(DOUBLE2 dir) = 0;
	virtual void ZeroVelocity(bool xVelocity, bool yVelocity) = 0;
	virtual int GetType() = 0;
	virtual void SetStage(int stage) = 0;
	virtual int GetMushroomType() = 0;

	static const int TYPE_NOTHING = 0;
	static const int TYPE_COIN = 1;
	static const int TYPE_FLOWER = 2;
	static const int TYPE_MUSHROOM = 3;
	static const int TYPE_STAR = 4;
	static const int TYPE_COINBLOCK = 5;

	static const int POP_SPEED_GENERAL = 50;

private: 
	//-------------------------------------------------
	// Datamembers								
	//-------------------------------------------------


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

 
