BWAPI
Public Member Functions | Private Member Functions | Private Attributes
ScoutDataClass Class Reference

#include <ScoutData.h>

Collaboration diagram for ScoutDataClass:
Collaboration graph
[legend]

List of all members.

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< PositionmPositions

Detailed Description

Definition at line 70 of file ScoutData.h.


Constructor & Destructor Documentation

Definition at line 7 of file ScoutData.cpp.

Definition at line 13 of file ScoutData.cpp.

References loadPositions().

        : mType(type)
        , mBase(base)
{
        loadPositions();
}

Here is the call graph for this function:


Member Function Documentation

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;
                }
        }
}

Here is the call graph for this function:

Here is the caller graph for this function:

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);
        }
}

Here is the call graph for this function:

Definition at line 84 of file ScoutData.h.

References mBase.

{ return mBase; }

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());
}

Here is the call graph for this function:

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;
        }
}

Here is the call graph for this function:

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;
        }
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 85 of file ScoutData.h.

References mType.

{ return mType; }

Definition at line 25 of file ScoutData.cpp.

References mPositions.

{
        return mPositions.empty();
}
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();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 20 of file ScoutData.cpp.

References checkPositions().

Here is the call graph for this function:


Member Data Documentation

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 90 of file ScoutData.h.

Referenced by checkPositions(), getType(), and loadPositions().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines