BWAPI
Public Member Functions | Private Attributes
PlayerTrackerClass Class Reference

#include <PlayerTracker.h>

List of all members.

Public Member Functions

 PlayerTrackerClass ()
void onBegin ()
void update ()
void onPlayerLeft (Player player)
void onDiscover (Unit unit)
void onMorphRenegade (Unit unit, Player previousPlayer, BWAPI::UnitType previousType)
void updatePlayers ()
bool isEnemyRace (BWAPI::Race race)
std::set< PlayergetEnemies (Player player=BWAPI::Broodwar->self()) const
std::set< PlayergetAllies (Player player=BWAPI::Broodwar->self()) const
bool playerHasReseached (Player player, BWAPI::TechType tech)
bool enemyHasReseached (BWAPI::TechType tech)
int playerUnitCount (BWAPI::UnitType unit, Player player=BWAPI::Broodwar->self()) const
int enemyUnitCount (BWAPI::UnitType unit, Player player=BWAPI::Broodwar->self()) const
const std::vector< UnitGroup > & getEnemyClusters ()

Private Attributes

std::set< PlayermEnemies
std::set< PlayermAllies
std::map< BWAPI::Race, bool > mEnemyRaceInfo
std::map< Player, bool > mPlayerHasOffensiveUnitsNeedDetection
std::map< Player, std::set
< BWAPI::TechType > > 
mResearched
std::vector< UnitGroupmEnemyClusters
bool mShowDebugInfo

Detailed Description

Definition at line 9 of file PlayerTracker.h.


Constructor & Destructor Documentation

Definition at line 12 of file PlayerTracker.h.

{}

Member Function Documentation

Definition at line 131 of file PlayerTracker.cpp.

References getEnemies(), and playerHasReseached().

{
        for each(Player enemy in getEnemies())
        {
                if(playerHasReseached(enemy, tech))
                        return true;
        }

        return false;
}

Here is the call graph for this function:

int PlayerTrackerClass::enemyUnitCount ( BWAPI::UnitType  unit,
Player  player = BWAPI::Broodwar->self() 
) const

Definition at line 177 of file PlayerTracker.cpp.

References getEnemies(), and playerUnitCount().

{
        int count = 0;
        for each(Player enemy in getEnemies(player))
        {
                count += playerUnitCount(unit, enemy);
        }

        return count;
}

Here is the call graph for this function:

std::set< Player > PlayerTrackerClass::getAllies ( Player  player = BWAPI::Broodwar->self()) const

Definition at line 157 of file PlayerTracker.cpp.

References BWAPI::Broodwar, BWAPI::Player::isAlly(), and mAllies.

Referenced by update().

{
        if(player == BWAPI::Broodwar->self())
                return mAllies;

        std::set<Player> allies;
        for each(Player ally in BWAPI::Broodwar->getPlayers())
        {
                if(player->isAlly(ally))
                        allies.insert(ally);
        }

        return allies;
}

Here is the call graph for this function:

Here is the caller graph for this function:

std::set< Player > PlayerTrackerClass::getEnemies ( Player  player = BWAPI::Broodwar->self()) const

Definition at line 142 of file PlayerTracker.cpp.

References BWAPI::Broodwar, BWAPI::Player::isEnemy(), and mEnemies.

Referenced by enemyHasReseached(), enemyUnitCount(), and update().

{
        if(player == BWAPI::Broodwar->self())
                return mEnemies;

        std::set<Player> enemies;
        for each(Player enemy in BWAPI::Broodwar->getPlayers())
        {
                if(player->isEnemy(enemy))
                        enemies.insert(enemy);
        }

        return enemies;
}

Here is the call graph for this function:

Here is the caller graph for this function:

const std::vector<UnitGroup>& PlayerTrackerClass::getEnemyClusters ( ) [inline]

Definition at line 34 of file PlayerTracker.h.

References mEnemyClusters.

{ return mEnemyClusters; }

Definition at line 121 of file PlayerTracker.cpp.

References mEnemyRaceInfo.

{
        return mEnemyRaceInfo[race];
}

Definition at line 9 of file PlayerTracker.cpp.

References updatePlayers().

Here is the call graph for this function:

void PlayerTrackerClass::onMorphRenegade ( Unit  unit,
Player  previousPlayer,
BWAPI::UnitType  previousType 
)

Definition at line 92 of file PlayerTracker.cpp.

References onDiscover().

{
        onDiscover(unit);
}

Here is the call graph for this function:

Definition at line 79 of file PlayerTracker.cpp.

References updatePlayers().

Here is the call graph for this function:

Definition at line 126 of file PlayerTracker.cpp.

References mResearched.

Referenced by enemyHasReseached().

{
        return mResearched[player].find(tech) != mResearched[player].end();
}

Here is the caller graph for this function:

int PlayerTrackerClass::playerUnitCount ( BWAPI::UnitType  unit,
Player  player = BWAPI::Broodwar->self() 
) const

Definition at line 172 of file PlayerTracker.cpp.

References Singleton< T >::Instance().

Referenced by enemyUnitCount().

{
        return UnitTracker::Instance().selectAllUnits(unit, player).size();
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 14 of file PlayerTracker.cpp.

References BWAPI::Broodwar, BWAPI::Game::drawText(), BWAPI::Game::drawTextScreen(), getAllies(), UnitHelper::getClusters(), getEnemies(), BWAPI::Player::getName(), Singleton< T >::Instance(), BWAPI::UnitType::isBuilding(), UnitHelper::isStaticDefense(), BWAPI::UnitType::isWorker(), AccessTypeDef::Lost, mEnemyClusters, mEnemyRaceInfo, mShowDebugInfo, BWAPI::Races::Protoss, BWAPI::CoordinateType::Screen, BWAPI::Races::Terran, BWAPI::UnitTypes::Terran_Vulture_Spider_Mine, updatePlayers(), BWAPI::Races::Zerg, BWAPI::UnitTypes::Zerg_Egg, BWAPI::UnitTypes::Zerg_Larva, and BWAPI::UnitTypes::Zerg_Overlord.

{
        if(mShowDebugInfo)
        {
                std::stringstream ss;
                ss << "There are ";

                if(mEnemyRaceInfo[BWAPI::Races::Zerg])
                        ss << "[Zerg]";

                if(mEnemyRaceInfo[BWAPI::Races::Terran])
                        ss << "[Terran]";

                if(mEnemyRaceInfo[BWAPI::Races::Protoss])
                        ss << "[Protoss]";

                ss << " Enemy Races";

                BWAPI::Broodwar->drawText(BWAPI::CoordinateType::Screen, 15, 5, "%s", ss.str().c_str());

                int y = 20;
                if(!getEnemies().empty())
                {
                        BWAPI::Broodwar->drawTextScreen(5, y, "Enemies:");
                        for each(Player player in getEnemies())
                        {
                                y += 10;
                                BWAPI::Broodwar->drawTextScreen(15, y, "%s", player->getName().c_str());
                        }
                }

                if(!getAllies().empty())
                {
                        y += 10;
                        BWAPI::Broodwar->drawTextScreen(5, y, "Allies:");
                        for each(Player player in getAllies())
                        {
                                y+=10;
                                BWAPI::Broodwar->drawTextScreen(15, y, "%s", player->getName().c_str());
                        }
                }
        }

        if(BWAPI::Broodwar->getFrameCount() % 240 == 0)
                updatePlayers();

        UnitGroup allEnemyUnits;
        for each(Unit unit in UnitTracker::Instance().selectAllEnemy())
        {
                if(unit->accessibility() == AccessType::Lost)
                        continue;

                const BWAPI::UnitType &type = unit->getType();
                if(type.isBuilding() && !UnitHelper::isStaticDefense(type))
                        continue;

                if(type.isWorker() || type == BWAPI::UnitTypes::Terran_Vulture_Spider_Mine || type == BWAPI::UnitTypes::Zerg_Overlord || type == BWAPI::UnitTypes::Zerg_Larva || type == BWAPI::UnitTypes::Zerg_Egg)
                        continue;

                allEnemyUnits.insert(unit);
        }

        mEnemyClusters = UnitHelper::getClusters(allEnemyUnits, 384, 1);
}

Here is the call graph for this function:

Definition at line 97 of file PlayerTracker.cpp.

References BWAPI::Broodwar, BWAPI::Player::getRace(), BWAPI::Player::leftGame(), mAllies, mEnemies, and mEnemyRaceInfo.

Referenced by onBegin(), onPlayerLeft(), and update().

{
        mEnemies.clear();
        mAllies.clear();
        mEnemyRaceInfo.clear();

        for each(Player player in BWAPI::Broodwar->getPlayers())
        {
                if(player->leftGame())
                        continue;

                if(player == BWAPI::Broodwar->self())
                        continue;

                if(BWAPI::Broodwar->self()->isEnemy(player))
                {
                        mEnemies.insert(player);
                        mEnemyRaceInfo[player->getRace()] = true;
                }
                else if(BWAPI::Broodwar->self()->isAlly(player))
                        mAllies.insert(player);
        }
}

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

std::set<Player> PlayerTrackerClass::mAllies [private]

Definition at line 38 of file PlayerTracker.h.

Referenced by getAllies(), and updatePlayers().

std::set<Player> PlayerTrackerClass::mEnemies [private]

Definition at line 37 of file PlayerTracker.h.

Referenced by getEnemies(), and updatePlayers().

Definition at line 46 of file PlayerTracker.h.

Referenced by getEnemyClusters(), and update().

Definition at line 40 of file PlayerTracker.h.

Referenced by isEnemyRace(), update(), and updatePlayers().

Definition at line 42 of file PlayerTracker.h.

std::map<Player, std::set<BWAPI::TechType> > PlayerTrackerClass::mResearched [private]

Definition at line 44 of file PlayerTracker.h.

Referenced by onDiscover(), and playerHasReseached().

Definition at line 48 of file PlayerTracker.h.

Referenced by update().


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