BWAPI
|
#include <ScoutData.h>
Public Member Functions | |
ScoutDataClass () | |
ScoutDataClass (Base base, ScoutType type) | |
void | update () |
bool | isAchieved () |
Position | getNextPosition (Position pos=BWAPI::Positions::None) |
Position | getLastPosition (Position pos=BWAPI::Positions::None) |
double | getDistance (Unit unit) |
Base | getBase () |
ScoutType | getType () |
void | drawDebug (BWAPI::Color colour) |
Private Member Functions | |
void | loadPositions () |
void | checkPositions () |
Private Attributes | |
ScoutType | mType |
Base | mBase |
std::set< Position > | mPositions |
Definition at line 70 of file ScoutData.h.
Definition at line 7 of file ScoutData.cpp.
: mType(ScoutType::None) , mBase() { }
ScoutDataClass::ScoutDataClass | ( | Base | base, |
ScoutType | type | ||
) |
Definition at line 13 of file ScoutData.cpp.
References loadPositions().
: mType(type) , mBase(base) { loadPositions(); }
void ScoutDataClass::checkPositions | ( | ) | [private] |
Definition at line 118 of file ScoutData.cpp.
References BWAPI::Broodwar, ScoutTypeDef::InitialBaseLocationScout, Singleton< T >::Instance(), MapHelper::isAnyVisible(), mBase, mPositions, mType, and BWAPI::UnitTypes::Terran_Command_Center.
Referenced by loadPositions(), and update().
{ for(std::set<Position>::iterator it = mPositions.begin(); it != mPositions.end();) { if(mType == ScoutType::InitialBaseLocationScout) { if(MapHelper::isAnyVisible(mBase->getCenterBuildLocation(), BWAPI::UnitTypes::Terran_Command_Center) || !BaseTracker::Instance().getEnemyBases().empty()) mPositions.erase(it++); else ++it; } else { if(BWAPI::Broodwar->isVisible(TilePosition(*it))) mPositions.erase(it++); else ++it; } } }
void ScoutDataClass::drawDebug | ( | BWAPI::Color | colour | ) |
Definition at line 139 of file ScoutData.cpp.
References BWAPI::Broodwar, BWAPI::Game::drawCircleMap(), mPositions, BWAPI::Position::x(), and BWAPI::Position::y().
{ for each(Position position in mPositions) { BWAPI::Broodwar->drawCircleMap(position.x(), position.y(), 16, colour); } }
Base ScoutDataClass::getBase | ( | ) | [inline] |
double ScoutDataClass::getDistance | ( | Unit | unit | ) |
Definition at line 30 of file ScoutData.cpp.
References getNextPosition(), and mPositions.
{ if(mPositions.size() == 1) return (*mPositions.begin()).getApproxDistance(unit->getPosition()); else return getNextPosition(unit->getPosition()).getApproxDistance(unit->getPosition()); }
Definition at line 63 of file ScoutData.cpp.
References BWAPI::Position::getApproxDistance(), mBase, mPositions, BWAPI::Positions::None, and BWAPI::BulletTypes::None.
{ if(mPositions.size() == 1) return *mPositions.begin(); else if(mPositions.empty()) return pos; else { Position closestPosition = BWAPI::Positions::None; double closestDistance = 0; for each(Position position in mPositions) { double distance = pos == BWAPI::Positions::None ? position.getApproxDistance(mBase->getCenterLocation()) : position.getApproxDistance(pos); if(distance > closestDistance) { closestDistance = distance; closestPosition = position; } } return closestPosition; } }
Definition at line 38 of file ScoutData.cpp.
References BWAPI::Position::getApproxDistance(), mBase, mPositions, BWAPI::Positions::None, and BWAPI::BulletTypes::None.
Referenced by getDistance().
{ if(mPositions.size() == 1) return *mPositions.begin(); else if(mPositions.empty()) return pos; else { Position closestPosition = BWAPI::Positions::None; double closestDistance = std::numeric_limits<double>::max(); for each(Position position in mPositions) { double distance = pos == BWAPI::Positions::None ? position.getApproxDistance(mBase->getCenterLocation()) : position.getApproxDistance(pos); if(distance < closestDistance) { closestDistance = distance; closestPosition = position; } } return closestPosition; } }
ScoutType ScoutDataClass::getType | ( | ) | [inline] |
bool ScoutDataClass::isAchieved | ( | ) |
void ScoutDataClass::loadPositions | ( | ) | [private] |
Definition at line 88 of file ScoutData.cpp.
References ScoutTypeDef::BaseScout, ScoutTypeDef::BaseSearch, BWAPI::Broodwar, checkPositions(), ScoutTypeDef::InitialBaseLocationScout, mBase, mPositions, mType, ScoutTypeDef::TechSearch, ScoutTypeDef::ThoroughSearch, SafeEnum< def, inner >::underlying(), BWAPI::TilePosition::x(), and BWAPI::TilePosition::y().
Referenced by ScoutDataClass().
{ switch(mType.underlying()) { case ScoutType::InitialBaseLocationScout: { mPositions.insert(Position(mBase->getCenterBuildLocation().x()*32+16, mBase->getCenterBuildLocation().y()*32+16)); break; } case ScoutType::TechSearch: case ScoutType::BaseSearch: case ScoutType::BaseScout: { mPositions.insert(mBase->getCenterLocation()); break; } case ScoutType::ThoroughSearch: { for each(TilePosition tile in mBase->getTiles()) { if(BWAPI::Broodwar->isBuildable(tile)) mPositions.insert(Position(tile.x()*32+16, tile.y()*32+16)); } break; } } checkPositions(); }
void ScoutDataClass::update | ( | ) |
Definition at line 20 of file ScoutData.cpp.
References checkPositions().
{ checkPositions(); }
Base ScoutDataClass::mBase [private] |
Definition at line 91 of file ScoutData.h.
Referenced by checkPositions(), getBase(), getLastPosition(), getNextPosition(), and loadPositions().
std::set<Position> ScoutDataClass::mPositions [private] |
Definition at line 93 of file ScoutData.h.
Referenced by checkPositions(), drawDebug(), getDistance(), getLastPosition(), getNextPosition(), isAchieved(), and loadPositions().
ScoutType ScoutDataClass::mType [private] |
Definition at line 90 of file ScoutData.h.
Referenced by checkPositions(), getType(), and loadPositions().