home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / gamesystem / includes / gs_sprite.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-05-29  |  3.6 KB  |  175 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    gsCSprite
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    12/03/00
  8. //
  9. // Base:    gsCObject
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #ifndef _INCLUDE_GS_SPRITE_H
  16. #define _INCLUDE_GS_SPRITE_H
  17.  
  18. #include "gs_object.h"
  19. #include "gs_point.h"
  20. #include "gs_image.h"
  21.  
  22. //-------------------------------------------------------------
  23.  
  24. class gsCSprite : public gsCObject
  25. {
  26.     private:
  27.         gsCTiledImage *m_image;
  28.         gsCPoint m_position;
  29.         gsCPoint m_hotspot;
  30.         bool m_active;
  31.         int m_frame;
  32.  
  33.         gsCColour m_fill_colour;
  34.         bool m_use_fill_colour;
  35.  
  36.         gsCRect m_rect;
  37.         bool m_rect_valid;
  38.  
  39.     public:
  40.         gsCSprite();
  41.         virtual ~gsCSprite();
  42.  
  43.         void setPosition(const gsCPoint& position);
  44.         void setHotspot(const gsCPoint& hotspot);
  45.         void setImage(gsCTiledImage *image);
  46.         void setActive(bool state = true);
  47.         void setFrame(int frame);
  48.  
  49.         gsCPoint getPosition();
  50.         gsCPoint getHotspot();
  51.         gsCTiledImage *getImage();
  52.         bool isActive();
  53.         int getFrame();
  54.  
  55.         void enableFillColour(const gsCColour& fill_colour);
  56.         void disableFillColour();
  57.  
  58.         const gsCRect& getRect();
  59.  
  60.         void move(const gsCPoint& offset);
  61.         bool draw();
  62. };
  63.  
  64. //-------------------------------------------------------------
  65.  
  66. inline void gsCSprite::setActive(bool state)
  67. {
  68.     m_active = state;
  69. }
  70.  
  71. //-------------------------------------------------------------
  72.  
  73. inline bool gsCSprite::isActive()
  74. {
  75.     return m_active;
  76. }
  77.  
  78. //-------------------------------------------------------------
  79.  
  80. inline void gsCSprite::setPosition(const gsCPoint& position)
  81. {
  82.     m_position = position;
  83.     m_rect_valid = false;
  84. }
  85.  
  86. //-------------------------------------------------------------
  87.  
  88. inline void gsCSprite::setHotspot(const gsCPoint& hotspot)
  89. {
  90.     m_hotspot = hotspot;
  91.     m_rect_valid = false;
  92. }
  93.  
  94. //-------------------------------------------------------------
  95.  
  96. inline void gsCSprite::setImage(gsCTiledImage *image)
  97. {
  98.     m_image = image;
  99.     m_rect_valid = false;
  100. }
  101.  
  102. //-------------------------------------------------------------
  103.  
  104. inline gsCPoint gsCSprite::getPosition()
  105. {
  106.     return m_position;
  107. }
  108.  
  109. //-------------------------------------------------------------
  110.  
  111. inline gsCPoint gsCSprite::getHotspot()
  112. {
  113.     return m_hotspot;
  114. }
  115.  
  116. //-------------------------------------------------------------
  117.  
  118. inline gsCTiledImage *gsCSprite::getImage()
  119. {
  120.     return m_image;
  121. }
  122.  
  123. //-------------------------------------------------------------
  124.  
  125. inline void gsCSprite::move(const gsCPoint& offset)
  126. {
  127.     m_position += offset;
  128.     m_rect_valid = false;
  129. }
  130.  
  131. //-------------------------------------------------------------
  132.  
  133. inline bool gsCSprite::draw()
  134. {
  135.     if (!m_image || !m_active)
  136.         return false;
  137.     if (!m_use_fill_colour)
  138.         return m_image->draw(m_frame,m_position - m_hotspot);
  139.     else
  140.         return m_image->drawSolid(m_frame,m_position - m_hotspot,m_fill_colour);
  141. }
  142.  
  143. //-------------------------------------------------------------
  144.  
  145. inline void gsCSprite::setFrame(int frame)
  146. {
  147.     m_frame = frame;
  148. }
  149.  
  150. //-------------------------------------------------------------
  151.  
  152. inline int gsCSprite::getFrame()
  153. {
  154.     return m_frame;
  155. }
  156.  
  157. //-------------------------------------------------------------
  158.  
  159. inline void gsCSprite::enableFillColour(const gsCColour& fill_colour)
  160. {
  161.     m_fill_colour = fill_colour;
  162.     m_use_fill_colour = true;
  163. }
  164.  
  165. //-------------------------------------------------------------
  166.  
  167. inline void gsCSprite::disableFillColour()
  168. {
  169.     m_use_fill_colour = false;
  170. }
  171.  
  172. //-------------------------------------------------------------
  173.  
  174. #endif
  175.