|
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().
1.7.6.1