BWAPI
|
00001 #pragma once 00002 #include <BWAPI.h> 00003 #include <math.h> 00004 00005 class WalkTilePosition 00006 { 00007 public: 00008 WalkTilePosition() 00009 : _x(0), _y(0) 00010 { 00011 } 00012 WalkTilePosition(const BWAPI::Position& position) 00013 : _x(position.x() / 8), _y(position.y() / 8) // 8 pixels for a WalkTile 00014 //: _x((position.x() + 4)/ 8), _y((position.y()+4) / 8) // 8 pixels for a WalkTile 00015 { 00016 } 00017 WalkTilePosition(const BWAPI::TilePosition& tile) 00018 : _x(tile.x() * 4), _y(tile.y() * 4) 00019 { 00020 } 00021 WalkTilePosition(int x, int y) 00022 : _x(x), _y(y) 00023 { 00024 } 00025 ~WalkTilePosition() { } 00026 bool operator == (const WalkTilePosition& walkTilePosition) const 00027 { 00028 return (_x == walkTilePosition.x() && _y == walkTilePosition.y()); 00029 } 00030 bool operator != (const WalkTilePosition& walkTilePosition) const 00031 { 00032 return (_x != walkTilePosition.x() || _y != walkTilePosition.y()); 00033 } 00034 bool operator < (const WalkTilePosition& walkTilePosition) const 00035 { 00036 return (_x < walkTilePosition.x() || 00037 (_x == walkTilePosition.x() && _y < walkTilePosition.y())); 00038 } 00039 WalkTilePosition operator+ (const WalkTilePosition& position) const 00040 { 00041 return WalkTilePosition(_x + position.x(), _y + position.y()); 00042 } 00043 WalkTilePosition operator- (const WalkTilePosition& position) const 00044 { 00045 return WalkTilePosition(_x - position.x(), _y - position.y()); 00046 } 00047 WalkTilePosition operator+= (const WalkTilePosition& position) 00048 { 00049 _x += position.x(); 00050 _y += position.y(); 00051 } 00052 WalkTilePosition operator-= (const WalkTilePosition& position) 00053 { 00054 _x -= position.x(); 00055 _y -= position.y(); 00056 } 00057 double getDistance(const WalkTilePosition& position) const 00058 { 00059 double xx = _x - position.x(); 00060 double yy = _y - position.y(); 00061 return sqrt(xx*xx + yy*yy); // in WALKTILES!! 00062 } 00063 BWAPI::Position getPosition() const 00064 { 00065 return BWAPI::Position(8*_x + 4, 8*_y + 4); 00066 } 00067 // double getLength() const; 00068 int x() const 00069 { 00070 return _x; 00071 } 00072 int y() const 00073 { 00074 return _y; 00075 } 00076 private: 00077 int _x; 00078 int _y; 00079 }; 00080