/* ** Haaf's Game Engine 1.7 ** Copyright (C) 2003-2007, Relish Games ** hge.relishgames.com ** ** hgeSprite helper class header */ #ifndef HGESPRITE_H #define HGESPRITE_H #include "hge.h" #include "hgerect.h" /* ** HGE Sprite class */ class hgeSprite { public: hgeSprite(HTEXTURE tex, float x, float y, float w, float h); hgeSprite(const hgeSprite &spr); ~hgeSprite() { hge->Release(); } void Render(float x, float y); void RenderEx(float x, float y, float rot, float hscale=1.0f, float vscale=0.0f); void RenderStretch(float x1, float y1, float x2, float y2); void Render4V(float x0, float y0, float x1, float y1, float x2, float y2, float x3, float y3); void SetTexture(HTEXTURE tex); void SetTextureRect(float x, float y, float w, float h, bool adjSize = true); void SetColor(DWORD col, int i=-1); void SetZ(float z, int i=-1); void SetBlendMode(int blend) { quad.blend=blend; } void SetHotSpot(float x, float y) { hotX=x; hotY=y; } void SetFlip(bool bX, bool bY, bool bHotSpot = false); HTEXTURE GetTexture() const { return quad.tex; } void GetTextureRect(float *x, float *y, float *w, float *h) const { *x=tx; *y=ty; *w=width; *h=height; } DWORD GetColor(int i=0) const { return quad.v[i].col; } float GetZ(int i=0) const { return quad.v[i].z; } int GetBlendMode() const { return quad.blend; } void GetHotSpot(float *x, float *y) const { *x=hotX; *y=hotY; } void GetFlip(bool *bX, bool *bY) const { *bX=bXFlip; *bY=bYFlip; } float GetWidth() const { return width; } float GetHeight() const { return height; } hgeRect* GetBoundingBox(float x, float y, hgeRect *rect) const { rect->Set(x-hotX, y-hotY, x-hotX+width, y-hotY+height); return rect; } hgeRect* GetBoundingBoxEx(float x, float y, float rot, float hscale, float vscale, hgeRect *rect) const; protected: hgeSprite(); static HGE *hge; hgeQuad quad; float tx, ty, width, height; float tex_width, tex_height; float hotX, hotY; bool bXFlip, bYFlip, bHSFlip; }; #endif