#pragma once

#include "GameCore.h"
#include "Stamp.h"

class SpriteStamp : public Stamp
{
public:
	SpriteStamp( int textureId, int totalWidth, int totalHeight, RECT* boundingBox );
	SpriteStamp( int textureId, D3DXVECTOR3* newPosition, int totalWidth, int totalHeight, RECT* boundingBox );
	~SpriteStamp(void);

	// getter setter for center
	D3DXVECTOR3* getCenter();
	void         setCenter( D3DXVECTOR3* newCenter );
	// getter setter for position
	D3DXVECTOR3* getPosition();
	void         setPosition( D3DXVECTOR3* newPosition );
	// getter setter for modulation color
	D3DCOLOR     getModulationColor();
	void         setModulationColor( D3DCOLOR newColor );
	// getter setter for clipping rect
	RECT*        getClippingRect();
	void         setClippingRect( RECT* clippingRect );
	// getter setter for texture
	int          getTextureId();
	void         setTextureId( int newId );
	// getter setter for total width
	int          getTotalWidth();
	void         setTotalWidth( int totalWidth );
	// getter setter for total height
	int          getTotalHeight();
	void         setTotalHeight( int totalHeight );
	// bounding box methods
	RECT*		 getBoundingBox();
	void		 setBoundingBox( RECT* newBox );
	// clone the sprite stamp
	SpriteStamp* clone();
	// be able to tell what kind of stamp this is
	Stamp::STAMP_TYPE getStampType();

protected:
    void init(int textureId, D3DXVECTOR3* newPosition, int totalWidth, int totalHeight, RECT* boundingBox);

	D3DXVECTOR3* position;         // position
	RECT* boundingBox;
};

