#pragma once

#include "GameCore.h"

class Stamp
{
public:
	Stamp(void);
	~Stamp(void);

	// getter setter for center
	virtual D3DXVECTOR3* getCenter() = 0;
	virtual void         setCenter( D3DXVECTOR3* newCenter ) = 0;
	// getter setter for modulation color
	virtual D3DCOLOR     getModulationColor() = 0;
	virtual void         setModulationColor( D3DCOLOR newColor ) = 0;
	// getter setter for clipping rect
	virtual RECT*        getClippingRect() = 0;
	virtual void         setClippingRect( RECT* clippingRect ) = 0;
	// getter setter for texture
	virtual int          getTextureId() = 0;
	virtual void         setTextureId( int newId ) = 0;
	// getter setter for total width
	virtual int          getTotalWidth() = 0;
	virtual void         setTotalWidth( int totalWidth ) = 0;
	// getter setter for total height
	virtual int          getTotalHeight() = 0;
	virtual void         setTotalHeight( int totalHeight ) = 0;
	// Make sure they define stamp type
	enum STAMP_TYPE { TILE, SPRITE };
	virtual STAMP_TYPE	 getStampType() = 0;
protected:
	int          textureId;        // texture 
	int          totalWidth;       // total width of texture image
	int          totalHeight;      // total height of texture image
	RECT*        clippingRect;     // clipping rect for image
	D3DXVECTOR3* center;           // center
	D3DCOLOR     modulationColor;  // color shift
};
