00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ANNCHIENTA_TILE_H
00019 #define ANNCHIENTA_TILE_H
00020
00021 #include <SDL_opengl.h>
00022 #include "Point.h"
00023 #include "Entity.h"
00024
00025 namespace Annchienta
00026 {
00027
00028 enum ObstructionType
00029 {
00030 DefaultObstruction=0,
00031 NoObstruction=1,
00032 FullObstruction=2
00033 };
00034
00035 class Surface;
00036 class Mask;
00037 class TileSet;
00038
00051 class Tile: public Entity
00052 {
00053
00054 private:
00055 Point points[4];
00056 Point isoPoints[4];
00057 Surface *surfaces[4];
00058 Surface *sideSurface;
00059 GLuint list;
00060
00061 TileSet *tileSet;
00062 int surfaceNumbers[4];
00063 int sideSurfaceNumber;
00064 int sideSurfaceOffset;
00065
00066
00067
00068
00069
00070 bool shadowed;
00071
00072
00073
00074
00075 bool visualIndication;
00076
00077 bool nullTile;
00078 bool needsRecompiling;
00079
00080 void makeList();
00081
00082 ObstructionType obstruction;
00083
00084 public:
00085 Tile( TileSet*, Point, int, Point, int, Point, int, Point, int, int ssOffset=0, int ss=0 );
00086 ~Tile();
00087
00088 virtual EntityType getEntityType() const;
00089
00090 virtual void update();
00091 virtual void draw();
00092 virtual int getDepth();
00093 virtual Mask *getMask() const;
00094
00097 bool hasPoint( Point point );
00098
00105 bool isNullTile() const;
00106
00111 void setZ( int point, int z );
00112
00116 int getZ( int point ) const;
00117
00118 #ifndef SWIG
00119
00123 virtual Point getMaskPosition() const;
00124
00128 Point getPoint( int i ) const;
00129 #endif
00130
00137 Point *getPointPointer( int i );
00138
00146 void setSurface( int index, int s );
00147 void setSideSurface( int ss );
00148 void setSideSurfaceOffset( int sso );
00149
00150 int getSurface( int i ) const;
00151 int getSideSurface() const;
00152 int getSideSurfaceOffset() const;
00153
00154 void setShadowed( bool shadowed );
00155 bool isShadowed() const;
00156
00157 void setVisualIndication( bool visualIndication );
00158 bool hasVisualIndication() const;
00159
00183 void setObstructionType( ObstructionType obstructionType );
00184 ObstructionType getObstructionType() const;
00185
00186 };
00187 };
00188
00189 #endif