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

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    gsCMapTile
  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_MAPTILE_H
  16. #define _INCLUDE_GS_MAPTILE_H
  17.  
  18. //-------------------------------------------------------------
  19.  
  20. const int gsMAPTILE_USERDATA = 4;
  21.  
  22. //-------------------------------------------------------------
  23.  
  24. class gsCMapTile : public gsCObject
  25. {
  26.     private:
  27.         int m_tile;
  28.         gsUBYTE m_empty;                        // = 1 if empty
  29.         gsUBYTE m_hidden;                        // = 1 if hidden
  30.         gsUBYTE m_data[gsMAPTILE_USERDATA];        // user data
  31.         gsUBYTE m_collision_flags;
  32.  
  33.     public:
  34.         gsCMapTile();
  35.         gsCMapTile(int tile,bool empty = false,bool hidden = false);
  36.         ~gsCMapTile();
  37.  
  38.         void setTile(int tile);
  39.         int getTile();
  40.  
  41.         void setEmpty(bool state = true);
  42.         void setHidden(bool state = true);
  43.         void setUserData(int index,gsUBYTE data);
  44.         void setCollisionFlags(gsUBYTE flags);
  45.  
  46.         bool isEmpty();
  47.         bool isHidden();
  48.         bool isDrawable();
  49.         gsUBYTE getUserData(int index);
  50.         gsUBYTE getCollisionFlags();
  51. };
  52.  
  53. //-------------------------------------------------------------
  54.  
  55. inline gsCMapTile::gsCMapTile()
  56. {
  57.     m_tile = 0;
  58.     m_empty = 1;
  59.     m_hidden = 0;
  60.     for (int i = 0; i < gsMAPTILE_USERDATA; i++)
  61.         m_data[i] = 0;
  62. }
  63.  
  64. //-------------------------------------------------------------
  65.  
  66. inline gsCMapTile::gsCMapTile(int tile,bool empty,bool hidden)
  67. {
  68.     m_tile = tile;
  69.     m_empty = (gsUBYTE) (empty ? 1 : 0);
  70.     m_hidden = (gsUBYTE) (hidden ? 1 : 0);
  71.     for (int i = 0; i < gsMAPTILE_USERDATA; i++)
  72.         m_data[i] = 0;
  73. }
  74.  
  75. //-------------------------------------------------------------
  76.  
  77. inline gsCMapTile::~gsCMapTile()
  78. {
  79. }
  80.  
  81. //-------------------------------------------------------------
  82.  
  83. inline void gsCMapTile::setTile(int tile)
  84. {
  85.     m_tile = tile;
  86. }
  87.  
  88. //-------------------------------------------------------------
  89.  
  90. inline int gsCMapTile::getTile()
  91. {
  92.     return m_tile;
  93. }
  94.  
  95. //-------------------------------------------------------------
  96.  
  97. inline void gsCMapTile::setEmpty(bool state)
  98. {
  99.     m_empty = (gsUBYTE) (state ? 1 : 0);
  100. }
  101.  
  102. //-------------------------------------------------------------
  103.  
  104. inline void gsCMapTile::setHidden(bool state)
  105. {
  106.     m_hidden = (gsUBYTE) (state ? 1 : 0);
  107. }
  108.  
  109. //-------------------------------------------------------------
  110.  
  111. inline void gsCMapTile::setUserData(int index,gsUBYTE data)
  112. {
  113.     gsASSERT(index >= 0 && index < gsMAPTILE_USERDATA);
  114.     
  115.     m_data[index] = data;
  116. }
  117.  
  118. //-------------------------------------------------------------
  119.  
  120. inline void gsCMapTile::setCollisionFlags(gsUBYTE flags)
  121. {
  122.     m_collision_flags = flags;
  123. }
  124.  
  125. //-------------------------------------------------------------
  126.  
  127. inline bool gsCMapTile::isEmpty()
  128. {
  129.     return m_empty != 0;
  130. }
  131.  
  132. //-------------------------------------------------------------
  133.  
  134. inline bool gsCMapTile::isHidden()
  135. {
  136.     return m_hidden != 0;
  137. }
  138.  
  139. //-------------------------------------------------------------
  140.  
  141. inline bool gsCMapTile::isDrawable()
  142. {
  143.     return m_empty == 0 && m_hidden == 0;
  144. }
  145.  
  146. //-------------------------------------------------------------
  147.  
  148. inline gsUBYTE gsCMapTile::getUserData(int index)
  149. {
  150.     gsASSERT(index >= 0 && index < gsMAPTILE_USERDATA);
  151.  
  152.     return m_data[index];
  153. }
  154.  
  155. //-------------------------------------------------------------
  156.  
  157. inline gsUBYTE gsCMapTile::getCollisionFlags()
  158. {
  159.     return m_collision_flags;
  160. }
  161. //-------------------------------------------------------------
  162.  
  163. #endif
  164.