BWAPI
|
#include <EnhancedChokepoint.h>
Public Member Functions | |
EnhancedChokepoint (BWTA::Chokepoint *chokepoint) | |
~EnhancedChokepoint (void) | |
const pair< BWTA::Region *, BWTA::Region * > & | getRegions () |
const pair< BWAPI::Position, BWAPI::Position > & | getSides () |
BWAPI::Position | getCenter () |
double | getWidth () |
bool | isPositionInPolygon (BWAPI::Position searchPos, BWTA::Polygon poly) |
vector< EnhancedSide > & | getBoundingBoxSidesForRegion (BWTA::Region *region) |
BWAPI::TilePosition | getBuildTile (BWTA::Region *region) |
void | drawTilePositions (void) |
void | drawBoundingBox (void) |
void | drawBoundingBoxSidesForRegion (BWTA::Region *region, BWAPI::Color color) |
void | drawBuildableTilesForRegion (BWTA::Region *region, BWAPI::Color color) |
void | drawBuildableSupplyDepotForRegion (BWTA::Region *region, BWAPI::Color color) |
Private Member Functions | |
bool | isSideInRegion (pair< BWAPI::Position, BWAPI::Position > endPoints, BWTA::Region *region) |
void | radialSweepSearch (pair< BWTA::Region *, vector< EnhancedSide >> regionSides) |
Private Attributes | |
BWTA::Chokepoint * | cp |
pair< BWAPI::TilePosition, BWAPI::TilePosition > | tPosSides |
BWAPI::TilePosition | tPosCenter |
int | xLeft |
int | xRight |
int | yTop |
int | yBottom |
pair< BWTA::Region *, vector < EnhancedSide > > | regionASides |
pair< BWTA::Region *, vector < EnhancedSide > > | regionBSides |
pair< BWTA::Region *, vector < BWAPI::TilePosition > > | regionABuildableTiles |
pair< BWTA::Region *, vector < BWAPI::TilePosition > > | regionBBuildableTiles |
pair< BWTA::Region *, BWAPI::TilePosition > | regionABuildTile |
pair< BWTA::Region *, BWAPI::TilePosition > | regionBBuildTile |
Definition at line 16 of file EnhancedChokepoint.h.
EnhancedChokepoint::EnhancedChokepoint | ( | BWTA::Chokepoint * | chokepoint | ) |
Definition at line 15 of file EnhancedChokepoint.cpp.
References EnhancedSide::bottom, cp, isSideInRegion(), EnhancedSide::left, radialSweepSearch(), regionABuildableTiles, regionABuildTile, regionASides, regionBBuildableTiles, regionBBuildTile, regionBSides, EnhancedSide::right, EnhancedSide::top, tPosCenter, tPosSides, xLeft, xRight, yBottom, and yTop.
{ pair<BWAPI::Position, BWAPI::Position> sides; /* corners */ BWAPI::Position topLeft, topRight, bottomLeft, bottomRight; /* sides */ pair<BWAPI::Position, BWAPI::Position> leftSide, topSide, rightSide, bottomSide; /* regions */ pair<BWTA::Region *, BWTA::Region *> regions; assert(chokepoint); cp = chokepoint; regions = cp->getRegions(); sides = cp->getSides(); /* get tile positions for center & sides */ tPosCenter = BWAPI::TilePosition(cp->getCenter()); tPosSides.first = BWAPI::TilePosition(sides.first); tPosSides.second = BWAPI::TilePosition(sides.second); /* get bounding box in position coords by tile positions */ if(tPosSides.first.x() <= tPosSides.second.x()) { xLeft = tPosSides.first.x() * 32; xRight = ((tPosSides.second.x() + 1) * 32) - 1; } else { xLeft = tPosSides.second.x() * 32; xRight = ((tPosSides.first.x() + 1) * 32) - 1; } if(tPosSides.first.y() <= tPosSides.second.y()) { yTop = tPosSides.first.y() * 32; yBottom = ((tPosSides.second.y() + 1) * 32) - 1; } else { yTop = tPosSides.second.y() * 32; yBottom = ((tPosSides.first.y() + 1) * 32) - 1; } /* set corner positions */ topLeft = BWAPI::Position(xLeft, yTop); topRight = BWAPI::Position(xRight, yTop); bottomLeft = BWAPI::Position(xLeft, yBottom); bottomRight = BWAPI::Position(xRight, yBottom); /* set sides, first position must be less * than the second (x or y), for searching purposes, * ie, only search right or down */ leftSide.first = topLeft; leftSide.second = bottomLeft; rightSide.first = topRight; rightSide.second = bottomRight; topSide.first = topLeft; topSide.second = topRight; bottomSide.first = bottomLeft; bottomSide.second = bottomRight; /* search for sides in region A */ regionASides.first = regions.first; regionABuildableTiles.first = regions.first; regionABuildTile.first = regions.first; if (isSideInRegion(leftSide, regions.first)) { regionASides.second.push_back(EnhancedSide(leftSide, EnhancedSide::left)); } if (isSideInRegion(topSide, regions.first)) { regionASides.second.push_back(EnhancedSide(topSide, EnhancedSide::top)); } if (isSideInRegion(rightSide, regions.first)) { regionASides.second.push_back(EnhancedSide(rightSide, EnhancedSide::right)); } if (isSideInRegion(bottomSide, regions.first)) { regionASides.second.push_back(EnhancedSide(bottomSide, EnhancedSide::bottom)); } /* serach for sides in region B */ regionBSides.first = regions.second; regionBBuildableTiles.first = regions.second; regionBBuildTile.first = regions.second; if (isSideInRegion(leftSide, regions.second)) { regionBSides.second.push_back(EnhancedSide(leftSide, EnhancedSide::left)); } if (isSideInRegion(topSide, regions.second)) { regionBSides.second.push_back(EnhancedSide(topSide, EnhancedSide::top)); } if (isSideInRegion(rightSide, regions.second)) { regionBSides.second.push_back(EnhancedSide(rightSide, EnhancedSide::right)); } if (isSideInRegion(bottomSide, regions.second)) { regionBSides.second.push_back(EnhancedSide(bottomSide, EnhancedSide::bottom)); } // search buildable tiles for each region radialSweepSearch(regionASides); radialSweepSearch(regionBSides); }
Definition at line 118 of file EnhancedChokepoint.cpp.
{ }
void EnhancedChokepoint::drawBoundingBox | ( | void | ) |
Definition at line 712 of file EnhancedChokepoint.cpp.
References BWAPI::Broodwar, xLeft, xRight, yBottom, and yTop.
{ BWAPI::Broodwar->drawBoxMap(xLeft, yTop, xRight, yBottom, BWAPI::Colors::White, false); }
void EnhancedChokepoint::drawBoundingBoxSidesForRegion | ( | BWTA::Region * | region, |
BWAPI::Color | color | ||
) |
Definition at line 685 of file EnhancedChokepoint.cpp.
References regionASides, and regionBSides.
{ assert(region); if (region == regionASides.first) { for (int m = 0; m < (int) regionASides.second.size(); ++m) { regionASides.second[m].drawSide(color); } } else if (region == regionBSides.first) { for (int m = 0; m < (int) regionBSides.second.size(); ++m) { regionBSides.second[m].drawSide(color); } } }
void EnhancedChokepoint::drawBuildableSupplyDepotForRegion | ( | BWTA::Region * | region, |
BWAPI::Color | color | ||
) |
Definition at line 735 of file EnhancedChokepoint.cpp.
References EnhancedUI::drawBoxAtTilePositionToSize(), regionABuildTile, and regionBBuildTile.
{ assert(region); EnhancedUI * eui = new EnhancedUI(); const BWAPI::UnitType & depot = BWAPI::UnitTypes::Terran_Supply_Depot; if (region == regionABuildTile.first) { //eui->drawTilePosition(regionABuildTile.second, color); eui->drawBoxAtTilePositionToSize(regionABuildTile.second, depot.tileWidth(), depot.tileHeight(), color); } else { //eui->drawTilePosition(regionBBuildTile.second, color); eui->drawBoxAtTilePositionToSize(regionBBuildTile.second, depot.tileWidth(), depot.tileHeight(), color); } delete eui; }
void EnhancedChokepoint::drawBuildableTilesForRegion | ( | BWTA::Region * | region, |
BWAPI::Color | color | ||
) |
Definition at line 717 of file EnhancedChokepoint.cpp.
References EnhancedUI::drawTilePosition(), regionABuildableTiles, and regionBBuildableTiles.
{ assert(region); EnhancedUI * eui = new EnhancedUI(); if (region == regionABuildableTiles.first) { for (int m = 0; m < (int)regionABuildableTiles.second.size(); ++m) { eui->drawTilePosition(regionABuildableTiles.second[m], color); } } else { for (int m = 0; m < (int)regionBBuildableTiles.second.size(); ++m) { eui->drawTilePosition(regionBBuildableTiles.second[m], color); } } delete eui; }
void EnhancedChokepoint::drawTilePositions | ( | void | ) |
Definition at line 701 of file EnhancedChokepoint.cpp.
References EnhancedUI::drawTilePosition(), tPosCenter, and tPosSides.
{ EnhancedUI * eui = new EnhancedUI(); BWAPI::Color color = BWAPI::Colors::Purple; eui->drawTilePosition(this->tPosSides.first, color); eui->drawTilePosition(this->tPosSides.second, color); /* draw this last and in a different color */ eui->drawTilePosition(this->tPosCenter, BWAPI::Colors::Yellow); delete eui; }
vector< EnhancedSide > & EnhancedChokepoint::getBoundingBoxSidesForRegion | ( | BWTA::Region * | region | ) |
Definition at line 665 of file EnhancedChokepoint.cpp.
References regionASides, and regionBSides.
Referenced by TacticalBuildingPlacer::chokepointBuildPatternSearch().
{ assert(region); if (region == regionASides.first) { return regionASides.second; } return regionBSides.second; }
BWAPI::TilePosition EnhancedChokepoint::getBuildTile | ( | BWTA::Region * | region | ) |
Definition at line 677 of file EnhancedChokepoint.cpp.
References regionABuildTile, and regionBBuildTile.
Referenced by TacticalBuildingPlacer::chokepointBuildPatternSearch().
{ assert(region); if (region == regionABuildTile.first) { return regionABuildTile.second; } return regionBBuildTile.second; }
BWAPI::Position EnhancedChokepoint::getCenter | ( | ) |
const pair< BWTA::Region *, BWTA::Region * > & EnhancedChokepoint::getRegions | ( | ) |
const pair< BWAPI::Position, BWAPI::Position > & EnhancedChokepoint::getSides | ( | ) |
double EnhancedChokepoint::getWidth | ( | ) |
bool EnhancedChokepoint::isPositionInPolygon | ( | BWAPI::Position | searchPos, |
BWTA::Polygon | poly | ||
) |
Definition at line 164 of file EnhancedChokepoint.cpp.
Referenced by isSideInRegion(), and radialSweepSearch().
{ int numPositions = (int) poly.size(); int polySides = numPositions; vector<float>polyX; vector<float>polyY; float x, y; int i, j; bool oddNodes = false; BWAPI::Position pos; polyX.reserve(numPositions); polyY.reserve(numPositions); /* get position values from polygon */ for (int m = 0; m < numPositions; ++m) { pos = poly[m]; polyX.push_back((float) pos.x()); polyY.push_back((float) pos.y()); } /* get position to search for */ x = (float) searchPos.x(); y = (float) searchPos.y(); /* init j */ j = polySides - 1; for (i=0; i<polySides; i++) { if ((polyY[i]< y && polyY[j]>=y || polyY[j]< y && polyY[i]>=y) && (polyX[i]<=x || polyX[j]<=x)) { oddNodes^=(polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x); } j=i; } return oddNodes; }
bool EnhancedChokepoint::isSideInRegion | ( | pair< BWAPI::Position, BWAPI::Position > | endPoints, |
BWTA::Region * | region | ||
) | [private] |
Definition at line 612 of file EnhancedChokepoint.cpp.
References isPositionInPolygon().
Referenced by EnhancedChokepoint().
{ BWAPI::Position pos; BWTA::Polygon poly; // only want sides longer than a tile length // that way if the bounding box is a single row // of tiles, one long side should be in one region // the other long side should be in the other region, // we don't care about the 2 short, 1 tile length sides // these should be covered anyways when you get the tiles // for the long side, it's still the same tile // // fine / coarse grain size, 32 = 1 tile length // start + 32 = start of next tile const int grainLengthForSearch = 32; assert(region); poly = region->getPolygon(); if (endPoints.first.x() == endPoints.second.x()) { /* only search down */ assert(endPoints.first.y() <= endPoints.second.y()); /* search along y, x is constant */ pos = BWAPI::Position(endPoints.first.x(), endPoints.first.y() + grainLengthForSearch); while (pos.y() < endPoints.second.y()) { // BWTA isInside() is broken, use ours // if (poly.isInside(pos)) { if (isPositionInPolygon(pos, poly)) { return true; } pos.y() += grainLengthForSearch; } } else { /* only search right */ assert(endPoints.first.x() <= endPoints.second.x()); /* search along x, y is constant */ pos = BWAPI::Position(endPoints.first.x() + grainLengthForSearch, endPoints.first.y()); while (pos.x() < endPoints.second.x()) { // BWTA isInside() is broken, use ours //if (poly.isInside(pos)) { if (isPositionInPolygon(pos, poly)) { return true; } pos.x() += grainLengthForSearch; } } return false; }
void EnhancedChokepoint::radialSweepSearch | ( | pair< BWTA::Region *, vector< EnhancedSide >> | regionSides | ) | [private] |
Definition at line 204 of file EnhancedChokepoint.cpp.
References EnhancedSide::bottom, BWAPI::Broodwar, EnhancedUI::getTilePositionCenter(), isPositionInPolygon(), EnhancedSide::left, regionABuildableTiles, regionABuildTile, regionBBuildableTiles, regionBBuildTile, EnhancedSide::right, and EnhancedSide::top.
Referenced by EnhancedChokepoint().
{ int numSides; // # of rounds to creep out int radiusLevel; // directions -1, +1, or 0 int xDir, yDir; // used to find new start tile from // previous stat tile int xStartDir, yStartDir; bool horizontalSide; // stores if horizontal, xDir, and yDir // mainly to reset to the initial direction // state, but also if start tile ends up being // on a different side // side 0 state: // directionOfSides[0][0] = is horizontal // directionOfSides[0][1] = xDir // directionOfSides[0][2] = yDir vector<int>sideDirection; vector<vector<int>> directionOfSides; bool foundBuildTile; bool foundStartTile; bool lastTileBuildable; EnhancedSide::Orientation orientation; // what we are searching for, includes all // buildable tiles found in the search vector<BWAPI::TilePosition> buildableTiles; BWAPI::TilePosition buildTile; // last known good buildable tile BWAPI::TilePosition previousStartTile; // first tile to increment from // getting the current tile BWAPI::TilePosition startTile; // first good buildable tile found BWAPI::TilePosition newStartTile; // first tile to check for buildability BWAPI::TilePosition currentTile; // used in case no new start tiles found BWAPI::TilePosition unbuildableStartTile; // keep track of side lengths to know // when to change sides and direction vector<int> currentSideLengths; // derived from found buildable tiles vector<int> newSideLengths; // instead of individual side lengths // each accumulates from last side // derived from currentSideLengths vector<int> whenToChangeSideLengths; // total # of tiles (for all sides) int currentTileTotalCount; int newTileTotalCount; // current side we are on int currentSide; // number of new build tiles for this side int newSideLength; EnhancedUI * eui = new EnhancedUI(); BWTA::Polygon poly = regionSides.first->getPolygon(); // old comment: // sides are added from left to bottom in constructor // check tiles diagonally from end tiles, and from corner tiles // next level or radius of search is based upon the side orientation // if there are 2 sides, there is a corner tile adjoinig them (shared) // search in a radial pattern sweeping clockwise // stop sweeping if tile is unbuildable or a supply depot build tile is found // correction: there is a case where the chokepoint is on a ramp, in which // case the entire first area may not be buildable, this makes things a bit // more complicated in knowing what is the set of tiles that should be considered // each round, if none are found to be buildable, then your set is 0, so if // none are found to be buildable, then you should just expand the set normally // as if they were all found to be buildable in hopes of the next round finding // at least one buildable tile (use unbuildableTilesForRound) numSides = (int) regionSides.second.size(); //numCorners = numSides - 1; assert(numSides); // left start tile, -x, +y // left next tile x=0, -y (move up) // top start tile -x, -y // top next tile +x, y=0 (move right) // right start tile +x, -y // right next tile x=0, +y (move down) // bottom start tile +x, +y // bottom next tile -x, y=0 (move left) // default is unset xDir = yDir = xStartDir = yStartDir = 0; newTileTotalCount = 0; // sort through the sides for (int m = 0; m < numSides; ++m) { vector<BWAPI::TilePosition> sideTiles; sideTiles = regionSides.second[m].getTilePositions(); // lengths of sides if (m == 0) { newSideLengths.push_back((int)sideTiles.size()); newTileTotalCount += (int)sideTiles.size(); } // next side length is reduced since it shares a tile // with the previous side else { newSideLengths.push_back((int)sideTiles.size() - 1); newTileTotalCount += (int)sideTiles.size() - 1; } orientation = regionSides.second[m].getOrientation(); // only need the new start tile from the first side if (m > 0) { continue; } // establish the new start tile, and the directions if (orientation == EnhancedSide::left) { // left start tile, -x, +y // left next tile x=0, -y (move up) xStartDir = -1; yStartDir = +1; xDir = 0; yDir = -1; // reverse newStartTile = sideTiles.back(); horizontalSide = false; } else if (orientation == EnhancedSide::top) { // top start tile -x, -y // top next tile +x, y=0 (move right) xStartDir = -1; yStartDir = -1; xDir = +1; yDir = 0; newStartTile = sideTiles.front(); horizontalSide = true; } else if (orientation == EnhancedSide::right) { // right start tile +x, -y // right next tile x=0, +y (move down) xStartDir = +1; yStartDir = -1; xDir = 0; yDir = +1; newStartTile = sideTiles.front(); horizontalSide = false; } else if (orientation == EnhancedSide::bottom) { // bottom start tile +x, +y // bottom next tile -x, y=0 (move left) xStartDir = +1; yStartDir = +1; xDir = -1; yDir = 0; newStartTile = sideTiles.back(); //reverse = true; horizontalSide = true; } } // end search sides // may use this later to check initial side tiles for buildability // but not exactly this way, don't really care about the order... // if (reverse) { // for (int n = (int) sideTiles.size() - 1; n >= 0; --n) { // if ( m > 0 && n == (int) sideTiles.size() - 1) { // corners.push_back(sideTiles[n]); // // and skip start of 2nd side (don't add twice since shared) // } // else { // currentTilesToSearchFrom.push_back(sideTiles[n]); // } // } // } // else { // for (int n = 0; n < (int) sideTiles.size(); ++n) { // if (m > 0 && n == 0) { // corners.push_back(sideTiles[n]); // // and skip start of 2nd side (don't add twice since shared) // } // else { // currentTilesToSearchFrom.push_back(sideTiles[n]); // } // } // } //} // init vars foundBuildTile = false; radiusLevel = 0; newSideLength = 0; // set first sides direction sideDirection; sideDirection.clear(); sideDirection.push_back((int)horizontalSide); sideDirection.push_back(xDir); sideDirection.push_back(yDir); directionOfSides.push_back(sideDirection); // now search until a build tile is found while (!foundBuildTile) { // reset before each round whenToChangeSideLengths.clear(); currentSide = 0; // this also gets reset when the side changes newSideLength = 0; lastTileBuildable = false; // side direction (1 && for warning suppression) horizontalSide = (1 && directionOfSides[currentSide][0]); xDir = directionOfSides[currentSide][1]; yDir = directionOfSides[currentSide][2]; // not used currently, but maybe later if (radiusLevel > 0) { previousStartTile = startTile; } // if no buildable tiles are found in the round // continue as if all were found to be buildable if (radiusLevel > 0 && !foundStartTile) { startTile = unbuildableStartTile; currentTile = unbuildableStartTile; currentTileTotalCount += 2 * (int)currentSideLengths.size(); int tileCount = 0; for (int n = 0; n < (int) currentSideLengths.size(); ++n) { // same # of sides as before, just longer, so no clear currentSideLengths[n] += 2; tileCount += currentSideLengths[n]; whenToChangeSideLengths.push_back(tileCount - 1); } } else { startTile = newStartTile; // will be incremented on x and y currentTile = startTile; // what to grow out by currentTileTotalCount = newTileTotalCount + 2 * (int)newSideLengths.size(); currentSideLengths.clear(); int tileCount = 0; for (int n = 0; n < (int) newSideLengths.size(); ++n) { currentSideLengths.push_back(newSideLengths[n] + 2); tileCount += newSideLengths[n] + 2; whenToChangeSideLengths.push_back(tileCount - 1); } } // reset round // newSideLengths is set at the end of each round newSideLengths.clear(); foundStartTile = false; newTileTotalCount = 0; // increment currentTile.x() += xStartDir; currentTile.y() += yStartDir; // start this round for (int m = 0; m < currentTileTotalCount; ++m) { // only used if no start tile is found in this round if (m == 0) { unbuildableStartTile = currentTile; } if (BWAPI::Broodwar->isBuildable(currentTile, true) && isPositionInPolygon(eui->getTilePositionCenter(currentTile), poly)) { buildableTiles.push_back(currentTile); newSideLength++; newTileTotalCount++; lastTileBuildable = true; // per round if (!foundStartTile) { newStartTile = currentTile; foundStartTile = true; // see if we are on a different side now, // if so, need to change xStartDir and yStartDir // used saved directions, but also remove any // saved directions for sides that got eliminated if (currentSide > 0) { // shift all to the left by 1 for (int n = 0; n < currentSide; ++n) { // from horizontal to vertical if (directionOfSides[n][0]) { xStartDir = xStartDir * -1; } else { yStartDir = yStartDir * -1; } // pop front directionOfSides[n] = directionOfSides[n+1]; } // pop back, so no doubles directionOfSides.pop_back(); } } if (BWAPI::Broodwar->canBuildHere(NULL, currentTile, BWAPI::UnitTypes::Terran_Supply_Depot, false)) { foundBuildTile = true; // yay! buildTile = currentTile; break; } } else if (lastTileBuildable) { // move on to next round since this tile // is not buildable and the last was // // Note: there can be the case where you // get a few buildable, then not buildable // then buildable again, but for now we want // to limit our search, unless this proves to // be not so good, if then, the newSideLength // needs to be changed as it only counts for // buildable tiles break; } // check for change in direction for next side // if so push back size for newSideLengths if (m == (whenToChangeSideLengths[currentSide]) && m != (currentTileTotalCount - 1)) { // skip on last tile newSideLengths.push_back(newSideLength); currentSide++; // reset for next side newSideLength = 0; // change direction based upon horizontality // how does this change per round? // what if the first side gets eliminated, that would // also change xStartDir and yStartDir for the start tile // find out if the start tile happens on the next side if (horizontalSide) { yDir = xDir; xDir = 0; // switch horizontalSide = false; } // vertical side else { // opposite xDir = yDir * -1; yDir = 0; // switch horizontalSide = true; } // save direction for side on first round // 1st side already saved, 2nd side gets added now and then so on // needs to happen after the next sides direction is derived if (radiusLevel == 0) { sideDirection; sideDirection.clear(); sideDirection.push_back((int)horizontalSide); sideDirection.push_back(xDir); sideDirection.push_back(yDir); directionOfSides.push_back(sideDirection); } } // increment direction currentTile.x() += xDir; currentTile.y() += yDir; } // end round or radius level // now at the end of last side, either by // last tile or no more buildable tiles newSideLengths.push_back(newSideLength); // increment after each round radiusLevel++; } // end while() // save data if (regionSides.first == regionABuildableTiles.first) { regionABuildableTiles.second = buildableTiles; regionABuildTile.second = buildTile; } else { regionBBuildableTiles.second = buildableTiles; regionBBuildTile.second = buildTile; } // clean up delete(eui); return; } // end func()
BWTA::Chokepoint* EnhancedChokepoint::cp [private] |
Definition at line 39 of file EnhancedChokepoint.h.
Referenced by EnhancedChokepoint(), getCenter(), getRegions(), getSides(), and getWidth().
pair<BWTA::Region * , vector<BWAPI::TilePosition> > EnhancedChokepoint::regionABuildableTiles [private] |
Definition at line 50 of file EnhancedChokepoint.h.
Referenced by drawBuildableTilesForRegion(), EnhancedChokepoint(), and radialSweepSearch().
pair<BWTA::Region * , BWAPI::TilePosition> EnhancedChokepoint::regionABuildTile [private] |
Definition at line 54 of file EnhancedChokepoint.h.
Referenced by drawBuildableSupplyDepotForRegion(), EnhancedChokepoint(), getBuildTile(), and radialSweepSearch().
pair<BWTA::Region * , vector<EnhancedSide> > EnhancedChokepoint::regionASides [private] |
Definition at line 46 of file EnhancedChokepoint.h.
Referenced by drawBoundingBoxSidesForRegion(), EnhancedChokepoint(), and getBoundingBoxSidesForRegion().
pair<BWTA::Region * , vector<BWAPI::TilePosition> > EnhancedChokepoint::regionBBuildableTiles [private] |
Definition at line 51 of file EnhancedChokepoint.h.
Referenced by drawBuildableTilesForRegion(), EnhancedChokepoint(), and radialSweepSearch().
pair<BWTA::Region * , BWAPI::TilePosition> EnhancedChokepoint::regionBBuildTile [private] |
Definition at line 55 of file EnhancedChokepoint.h.
Referenced by drawBuildableSupplyDepotForRegion(), EnhancedChokepoint(), getBuildTile(), and radialSweepSearch().
pair<BWTA::Region * , vector<EnhancedSide> > EnhancedChokepoint::regionBSides [private] |
Definition at line 47 of file EnhancedChokepoint.h.
Referenced by drawBoundingBoxSidesForRegion(), EnhancedChokepoint(), and getBoundingBoxSidesForRegion().
BWAPI::TilePosition EnhancedChokepoint::tPosCenter [private] |
Definition at line 42 of file EnhancedChokepoint.h.
Referenced by drawTilePositions(), and EnhancedChokepoint().
pair<BWAPI::TilePosition, BWAPI::TilePosition> EnhancedChokepoint::tPosSides [private] |
Definition at line 41 of file EnhancedChokepoint.h.
Referenced by drawTilePositions(), and EnhancedChokepoint().
int EnhancedChokepoint::xLeft [private] |
Definition at line 44 of file EnhancedChokepoint.h.
Referenced by drawBoundingBox(), and EnhancedChokepoint().
int EnhancedChokepoint::xRight [private] |
Definition at line 44 of file EnhancedChokepoint.h.
Referenced by drawBoundingBox(), and EnhancedChokepoint().
int EnhancedChokepoint::yBottom [private] |
Definition at line 44 of file EnhancedChokepoint.h.
Referenced by drawBoundingBox(), and EnhancedChokepoint().
int EnhancedChokepoint::yTop [private] |
Definition at line 44 of file EnhancedChokepoint.h.
Referenced by drawBoundingBox(), and EnhancedChokepoint().