BWAPI
|
#include <EnhancedUI.h>
Public Member Functions | |
void | update () const |
void | drawBoxAtTilePositionToSize (BWAPI::TilePosition tpos, int width, int height, BWAPI::Color color) |
int | getMinTileSize (int pixels) |
int | getMaxTileSize (int pixels) |
BWAPI::Position | getTilePositionCenter (BWAPI::TilePosition) |
void | drawRegionBoundingBox (const BWTA::Region *region) |
void | getRegionBoundingTilePositions (const BWTA::Region *region, BWAPI::TilePosition &topLeftTP, BWAPI::TilePosition &topRightTP, BWAPI::TilePosition &bottomRightTP, BWAPI::TilePosition &bottomLeftTP) |
void | drawPolygonFromRegion (BWTA::Region *region, BWAPI::Color color) |
void | drawTilePosition (BWAPI::TilePosition tPos, BWAPI::Color color) |
Private Member Functions | |
void | drawBases () const |
void | drawTerrain () const |
Private Attributes | |
vector< BWAPI::TilePosition > | foundSDTPos |
vector< BWAPI::TilePosition > | buildSDTPos |
Definition at line 9 of file EnhancedUI.h.
void EnhancedUI::drawBases | ( | ) | const [private] |
Definition at line 23 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
{ //we will iterate through all the base locations, and draw their outlines. for(std::set<BWTA::BaseLocation*>::const_iterator i=BWTA::getBaseLocations().begin();i!=BWTA::getBaseLocations().end();i++) { BWAPI::TilePosition p=(*i)->getTilePosition(); Position c=(*i)->getPosition(); //draw outline of center location Broodwar->drawBox(CoordinateType::Map,p.x()*32,p.y()*32,p.x()*32+4*32,p.y()*32+3*32,Colors::Blue,false); //draw a circle at each mineral patch for(std::set<BWAPI::Unit*>::const_iterator j=(*i)->getMinerals().begin();j!=(*i)->getMinerals().end();j++) { Position q=(*j)->getPosition(); Broodwar->drawCircle(CoordinateType::Map,q.x(),q.y(),30,Colors::Cyan,false); } //draw the outlines of vespene geysers for(std::set<BWAPI::Unit*>::const_iterator j=(*i)->getGeysers().begin();j!=(*i)->getGeysers().end();j++) { BWAPI::TilePosition q=(*j)->getTilePosition(); Broodwar->drawBox(CoordinateType::Map,q.x()*32,q.y()*32,q.x()*32+4*32,q.y()*32+2*32,Colors::Orange,false); } //if this is an island expansion, draw a yellow circle around the base location if ((*i)->isIsland()) { Broodwar->drawCircle(CoordinateType::Map,c.x(),c.y(),80,Colors::Yellow,false); } } }
void EnhancedUI::drawBoxAtTilePositionToSize | ( | BWAPI::TilePosition | tpos, |
int | width, | ||
int | height, | ||
BWAPI::Color | color | ||
) |
Definition at line 94 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
Referenced by TacticalBuildingPlacer::draw(), and EnhancedChokepoint::drawBuildableSupplyDepotForRegion().
{ Broodwar->drawBoxMap(tpos.x() * 32, tpos.y() * 32, ((tpos.x() + width) * 32) - 1, ((tpos.y() + height) * 32) - 1, color); }
void EnhancedUI::drawPolygonFromRegion | ( | BWTA::Region * | region, |
BWAPI::Color | color | ||
) |
Definition at line 83 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
{ BWTA::Polygon p = region->getPolygon(); for (int j = 0; j < (int)p.size(); j++) { Position point1=p[j]; Position point2=p[(j+1) % p.size()]; Broodwar->drawLine(CoordinateType::Map,point1.x(),point1.y(),point2.x(),point2.y(),color); } }
void EnhancedUI::drawRegionBoundingBox | ( | const BWTA::Region * | region | ) |
Definition at line 242 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
{ BWTA::Polygon poly; BWAPI::Position pLeft, pRight, pTop, pBottom; poly = region->getPolygon(); pLeft = pRight = pTop = pBottom = (Position) poly[0]; /* get bounds for BWTA region, map top left is (0,0) */ for(int j = 1; j < (int)poly.size(); j++) { if(poly[j].x() < pLeft.x()){ pLeft = poly[j]; } if(poly[j].x() > pRight.x()){ pRight = poly[j]; } if(poly[j].y() < pTop.y()){ pTop = poly[j]; } if(poly[j].y() > pBottom.y()){ pBottom = poly[j]; } } Broodwar->drawBoxMap(pLeft.x(), pTop.y(), pRight.x(), pBottom.y(), Colors::Purple, false); }
void EnhancedUI::drawTerrain | ( | ) | const [private] |
Definition at line 56 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
{ //we will iterate through all the regions and draw the polygon outline of it in green. for(std::set<BWTA::Region*>::const_iterator r=BWTA::getRegions().begin();r!=BWTA::getRegions().end();r++) { BWTA::Polygon p=(*r)->getPolygon(); for(int j=0;j<(int)p.size();j++) { Position point1=p[j]; Position point2=p[(j+1) % p.size()]; Broodwar->drawLine(CoordinateType::Map,point1.x(),point1.y(),point2.x(),point2.y(),Colors::Green); } } //we will visualize the chokepoints with yellow lines for(std::set<BWTA::Region*>::const_iterator r=BWTA::getRegions().begin();r!=BWTA::getRegions().end();r++) { for(std::set<BWTA::Chokepoint*>::const_iterator c=(*r)->getChokepoints().begin();c!=(*r)->getChokepoints().end();c++) { Position point1=(*c)->getSides().first; Position point2=(*c)->getSides().second; Broodwar->drawLine(CoordinateType::Map,point1.x(),point1.y(),point2.x(),point2.y(),Colors::Yellow); } } }
void EnhancedUI::drawTilePosition | ( | BWAPI::TilePosition | tPos, |
BWAPI::Color | color | ||
) |
Definition at line 17 of file EnhancedUI.cpp.
References BWAPI::Broodwar.
Referenced by EnhancedChokepoint::drawBuildableTilesForRegion(), EnhancedChokepoint::drawTilePositions(), and EnhancedSide::drawTiles().
{ Broodwar->drawBoxMap(tPos.x() * 32, tPos.y() * 32, tPos.x() * 32 + 31, tPos.y() * 32 + 31, color, false); }
int EnhancedUI::getMaxTileSize | ( | int | pixels | ) |
Definition at line 106 of file EnhancedUI.cpp.
{ if(pixels % TILE_SIZE){ return pixels / TILE_SIZE + 1; } return pixels / TILE_SIZE; }
int EnhancedUI::getMinTileSize | ( | int | pixels | ) |
Definition at line 101 of file EnhancedUI.cpp.
{
return pixels / TILE_SIZE;
}
void EnhancedUI::getRegionBoundingTilePositions | ( | const BWTA::Region * | region, |
BWAPI::TilePosition & | topLeftTP, | ||
BWAPI::TilePosition & | topRightTP, | ||
BWAPI::TilePosition & | bottomRightTP, | ||
BWAPI::TilePosition & | bottomLeftTP | ||
) |
Definition at line 125 of file EnhancedUI.cpp.
{ BWTA::Polygon poly; BWAPI::Position pLeft, pRight, pTop, pBottom; /* tile sizes */ int tsLeft, tsTop, tsRight, tsBottom; poly = region->getPolygon(); pLeft = pRight = pTop = pBottom = (Position) poly[0]; /* get bounds for BWTA region, map top left is (0,0) */ for(int j = 1; j < (int)poly.size(); j++) { if(poly[j].x() < pLeft.x()){ pLeft = poly[j]; } if(poly[j].x() > pRight.x()){ pRight = poly[j]; } if(poly[j].y() < pTop.y()){ pTop = poly[j]; } if(poly[j].y() > pBottom.y()){ pBottom = poly[j]; } } /* align to tile sizes */ tsLeft = this->getMaxTileSize(pLeft.x()); tsTop = this->getMaxTileSize(pTop.y()); tsRight = this->getMinTileSize(pRight.x()); tsBottom = this->getMinTileSize(pBottom.y()); /* set tile positions */ topLeftTP.x() = tsLeft; topLeftTP.y() = tsTop; topRightTP.x() = tsRight; topRightTP.y() = tsTop; bottomRightTP.x() = tsRight; bottomRightTP.y() = tsBottom; bottomLeftTP.x() = tsLeft; bottomLeftTP.y() = tsBottom; }
BWAPI::Position EnhancedUI::getTilePositionCenter | ( | BWAPI::TilePosition | tPos | ) |
Definition at line 114 of file EnhancedUI.cpp.
Referenced by EnhancedChokepoint::radialSweepSearch().
{
BWAPI::Position pos;
pos.x() = tPos.x() * 32 + 15;
pos.y() = tPos.y() * 32 + 15;
return pos;
}
void EnhancedUI::update | ( | ) | const |
Definition at line 10 of file EnhancedUI.cpp.
{ drawTerrain(); drawBases(); // drawProgress(); }
vector<BWAPI::TilePosition> EnhancedUI::buildSDTPos [private] |
Definition at line 46 of file EnhancedUI.h.
vector<BWAPI::TilePosition> EnhancedUI::foundSDTPos [private] |
Definition at line 45 of file EnhancedUI.h.