00001 #ifndef XCLONE_DIRECTION_H 00002 #define XCLONE_DIRECTION_H 00003 00004 #include "includes.h" 00005 00006 class Direction 00007 { 00008 public: 00009 ~Direction(); 00010 00011 static Direction N; 00012 static Direction NE; 00013 static Direction E; 00014 static Direction SE; 00015 static Direction S; 00016 static Direction SW; 00017 static Direction W; 00018 static Direction NW; 00019 00020 const Point& offset() const; 00021 const Direction& opposite() const; 00022 bool isCardinal() const; 00023 00024 static vector<const Direction*> getAllDirections(); 00025 00026 bool operator<(const Direction& dir) const; 00027 bool operator==(const Direction& dir) const; 00028 00029 private: 00030 Direction(int x, int y, Direction& opp, bool cardinal); 00031 00032 Point _offset; 00033 Direction* _opposite; 00034 bool _cardinal; 00035 }; 00036 00037 #endif